Gevent

gevent 是一个基于python协程的网络库,遇到io自动切换

 

import requests
import gevent
from gevent import monkey

monkey.patch_all() # 用于将标准库中大部分阻塞式调用修改为协作式运行


def get_data(url):
print(f"run {url}")
result = requests.get(url).content
# print(f"{url}: {len(result)}")
return url, len(result)

if __name__ == '__main__':
gevent.joinall([
gevent.spawn(get_data, "https://www.baidu.com"),
gevent.spawn(get_data, "https://www.zhihu.com"),
]) # spawn 创建greenlent 协程对象, joinall 参数是列表,等待列表中的元素全部执行完毕



# 获取所有的结果
trans_list = []
for url in ["https://*.com/", "https://www.douban.com", "https://www.github.com"]:
trans_list.append(gevent.spawn(get_data, url))
gevent.joinall(trans_list)
for j in trans_list:
print(j.value)

上一篇:迭代器--》生成器--》协程的关系与区别


下一篇:python – 正确的greenlet终止