8
From Async/Await to Virtual Threads (Python)
(lucumr.pocoo.org)
Welcome to the Python community on the programming.dev Lemmy instance!
Past
November 2023
October 2023
July 2023
August 2023
September 2023
This looks like the author wants Go's concurrency framework (i.e. green threads), with Rust's mutex system. I think that would be awesome!
My main concern is that it would require a massive reworking of Python's internals to provide concurrency-friendly IO. The author mentioned the example of OS files, but there are plenty of others, especially with third party libraries using native extensions.
Free threaded came on the scene and packages slowly added support. So there is a will to gravitate towards and adopt what works. Albeit gradually.
I prefer typing_extensions over typing and collections.abc
With typing_extensions, new features are always backported. With Python features, have to continuously upgrade Python. Whatever you upgrade to is already guaranteed to be very temporary. It's much easier to upgrade a package.
For the same reasoning would prefer Trio over asyncio.TaskGroup.
Which leads to the question Trio vs asyncio.TaskGroup?
asyncio.TaskGroup is a py311 feature with context kwarg added in 3.13. The documentation is very terse and i'm unsure what guarantees it has, besides strong. Missed opportunity. Could have used the adjective, Mickey mouse. Both are essentially the same, useless.
Having to upgrade to 3.13 is what i call failure to backport or simply, failure or that's what failure looks like.
Give a free pass to free threading, but everything else, no!
Having to upgrade Python to have access to sane structured concurrency is silly. Have the exact same complaints about Package Managers.