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://stackoverflow.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)

posted @ 2020-06-16 14:51  AndRew-A  阅读(226)  评论(0编辑  收藏  举报