Python 2 时代, 高性能的网络编程主要是使用 Twisted, Tornado, Gevent 这三个库. 但是他们的异步代码相互之间不兼容越不能移植.
asyncio 在 python 3.4 中被引入到标准库.
Python 3.5 添加了 async 和 await 两个关键字 , 替换 asyncio.coroutine
和 yield from
. 自此, 协程成为新的语法, 而不再是一种生成器类型了. 事件循环与写成的引入, 可以极大提高高负载下程序的 IO 性能. 除此之外, 还增加了 async with(异步山下文管理)
和 asyncfor(异步迭代器)
语法.
在续不发言的 Python 3.6 里面终于可以使用 异步生成器了
asyncio
asyncio 使用单线程, 单个进程的方式进行切换 通常程序等待读或者写数据时, 就是切换上下文的时机.
同步机制
Semaphore (信号量)
Lock (锁)
Condition (条件)
Event (事件)
Queue (队列)
- LifoQueue
- PriorityQueue