python_协程_gevent模块
import requests
# 导入 gevent
import gevent
# 由于切换是在IO操作时自动完成 所以gevent需要修改Python自带的一些标准库 这一过程在启动时通过monkey patch(猴子补丁)完成
from gevent import monkey; monkey.patch_socket() # 注释这句话,则协程不会起效果,需要写在导包的语句下面
from gevent import Timeout
def func(flag):
# 延时操作
res = requests.get('https://www.baidu.com')
if res.status_code == 200:
print('{}-完成任务'.format(flag))
return flag
if __name__ == '__main__':
# 创建任务池
li = []
for i in range(10):
# 创建任务
g = gevent.spawn(func, i)
# 添加到任务池中
li.append(g)
# 执行任务, gevent.joinall 接受一个任务池
gevent.joinall(li)
#接收任务池中任务的返回值
for i in li:
print(i.value,dir(i))