5 ms·
No, determinstic scheduling is not a property of async python. Yes, the stdlib asyncio event loop does have deterministic scheduling, but that's an implementat
by 12_throw_away 6mo ago
No, determinstic scheduling is not a property of async python.
Yes, the stdlib asyncio event loop does have deterministic scheduling, but that's an implementation detail and I would not rely on it for anything critical. Other event loops - for instance trio [1] - explicitly randomize startup order so that you won't accidentally write code that relies on it.
[1] https://github.com/python-trio/trio/issues/32 https://github.com/python-trio/trio/issues/32
- KraftyOne 6mo agoIt's been a stable (and documented) behavior of the Python standard library for almost a decade now. It's possible it may change--nothing is ever set in stone--but that would be a large change in Python that would come with plenty of warning and time for adjustment.
- 9dev 6mo agoAnd then one day, Astral creates a new Python implementation in Rust or something that is way faster and all the rage, but does this particular thing different than CPython. Whoops, you can’t use that runtime, because you now have cursed parts in your codebase that produce nondeterministic behaviour you can’t really find a reason for.
- ubercore 6mo agoThat's a bit what it felt like when I was learning Rust async. I get it, but "ecosystems" of async runtimes have a pretty big cost.
- stuartjohnson12 6mo agoand then all the serverless platforms will start using Astral's new rust-based runtime to reduce cold starts, and in theory it's identical, except half of packages now don't work and it's very hard to anticipate which ones will and will not and behold! You have achieved Deno
- LtWorf 6mo agoIf the python core team cared about not breaking things I wouldn't need to run my tests on all versions of python.
- wavemode 6mo agoIf I know anything about the Python community - that new runtime would simply never gain significant traction, due to the incompatibility.
- farsa 6mo agoWell, in my early days programming python I made a lot(!!) of code assuming non-concurrent execution, but some of that code will break in the future with GIL removal. Hopefully the Python devs keep these important changes as opt-ins.
- StableAlkyne 6mo ago> but that's an implementation detail That sounds familiar... https://stackoverflow.com/questions/39980323/are-dictionaries-ordered-in-python-3-6 https://stackoverflow.com/questions/39980323/are-dictionarie...
- mort96 6mo agoHow do you differentiate between something that "happens to work due to an implementation detail" and a "proper feature that's specified to work" in a language without a specification?
- game_the0ry 6mo agoI just realized how little I know about how async event loops.
- OptionOfT 6mo agoThe good old Workflow XKCD matches this perfectly: https://xkcd.com/1172/ https://xkcd.com/1172/