Wikipedia: a form of input/output processing that permits other processing to continue before the transmission has finished.
Process communication is a problem.
Shared memory is an advantage
And a problem
GIL on CPython.
Avoids synchronization problems. cooperative.
Managed in user-space.
No operating system optimization for native threads
Quite a hack on Python (gevent + monkey patching).
Single thread, Single process, cooperative multitasking.
Reduces context switches and overhead
Need to make sure it's cooperative, CPU intensive code will block.
Nope. GUIs been doing it for a long time.
Good GUI developers know:
Don't block the main event loop (Looking at you Swing).
Handle many connections without an extra overhead.
Nginx, Lighttpd, NodeJS, Twisted, Tornado ...
asyncore & asynchat available since Python 1.5.2.
Uses select (or poll).
Virtually nobody used it.
Feedback from Twisted, Tornado, gevent, etc.
Inter operate, not replace them.
Defines an interface which can be implemented on top of other event loops.
yield from, generators can return values
See it for a in depth overview of the subject.
HTTP client/server for asyncio