How the heck does async/await work in Python 3.5

Paul Rubin no.email at nospam.invalid
Sun Feb 21 02:34:49 EST 2016


Steven D'Aprano <steve at pearwood.info> writes:
> "But frankly the stuff I'm seeing in this thread makes me sad for
> *literally every programming language in existence except for Erlang
> and maybe one or two others*, which altogether about six people use in
> total..."

Erlang microtasks are more a matter of the runtime environment than the
language.  It might be possible to have something like it in PyPy.

Other languages typically do concurrency with something like:

  1. threads - various hazards that can be avoided if you're careful
  2. callback chaining like in node.js - gets messy if the program
     is complicated, but conceptually simple
  3. explicit state machines with something like libevent in C --
     same as #2, simple but tedious
  4. lightweight threads/tasks like in GHC and Erlang -- very nice though
     requires a sophisticated runtime system
  5. cooperative multasking (small RTOS's, Forth, etc): simple, but
     apparently bug-prone when the program gets complicated

Python's async stuff seems to combine various of the above approaches
and (while I'm not saying it's objectively bad) the experiences I've had
with it so far have been confusing and unpleasant.  I do want to put
some effort into understanding asyncio, but so far threads have worked
ok for me.

OK Web Server (uses a separate C++ process for each page on the site)
looked straightforward and fast, though makes some architectural
impositions.

http://seastar-project.org/ seems interesting but I don't understand it
at the moment.



More information about the Python-list mailing list