python 多进程-04 协程
- 协程是程序员创造出来的
- 单纯的协程没有作用
- 需要io操作时候进行切换 才有意义
原理 greenlet
import greenlet
def f1():
print(11)
gr2.switch()
print(33)
gr2.switch()
def f2():
print(22)
gr1.switch()
print(44)
if __name__ == '__main__':
"""
1. 协程是程序员创造出来的
2. 单纯的协程没有作用
3. 需要io操作时候进行切换 才有意义
"""
gr1 = greenlet.greenlet(f1)
gr2 = greenlet.greenlet(f2)
gr1.switch()
协程常用模块 gevent
from gevent import monkey
monkey.patch_all() # 以后代码中遇到IO都会自动执行greenlet 的 switch 进行切换
import requests
import gevent # 在money 之后导入
def get_page(url):
ret = requests.get(url)
print(url, ret.content)
if __name__ == '__main__':
gevent.joinall([
gevent.spawn(get_page, 'https://www.python.org'),
gevent.spawn(get_page, 'https://www.baidu.com'),
gevent.spawn(get_page, 'https://github.com'),
])