python-并发编程

参考地址

参考地址

参考地址

Python 2 时代, 高性能的网络编程主要是使用 Twisted, Tornado, Gevent 这三个库. 但是他们的异步代码相互之间不兼容也不能移植.

python 3.4 引入 asyncio 到标准库.

Python 3.5

  • 添加了 asyncawait 两个关键字 , 替换 asyncio.coroutineyield from.
    协程成为新的语法, 而不再是一种生成器类型了. 事件循环与协程的引入, 可以极大提高高负载下程序的 IO 性能.
  • async with(异步山下文管理)
  • asyncfor(异步迭代器)

在新发布的 Python 3.6 里面终于可以使用 异步生成器了

sanic/aiohttp

asyncio

asyncio 使用单线程, 单个进程的方式进行切换 通常程序等待读或者写数据时, 就是切换上下文的时机.

同步机制

Semaphore (信号量)

Lock (锁)

Condition (条件)

Event (事件)

Queue (队列)

  • LifoQueue
  • PriorityQueue

Task

事件循环