# coding:utf-8import geventimport requestsfrom gevent import monkey# 猴子补丁就是在运行时对代码进行修改# 由于IO操作非常耗时,程序经常会处于等待状态# 比如请求多个网页有时候需要等待,gevent可
# coding:utf-8 import gevent import requests from gevent import monkey # 猴子补丁就是在运行时对代码进行修改 # 由于IO操作非常耗时,程序经常会处于等待状态 # 比如请求多个网页有时候需要等待,gevent可以自动切换协程 # 遇到阻塞自动切换协程,程序启动时执行monkey.patch_all()解决 # 首行添加下面的语句即可 monkey.patch_all() def run_task(url): print(‘start by %s‘ % (url,)) try: resp = requests.get(url=url) print(‘%d bytes from %s‘ % (len(resp.text), url)) except Exception as ex: print(ex.message) if __name__ == "__main__": """ # 查看运行结果可以发现,三个协程是同时触发的,但是结束顺序不同 # 网页请求的时间不同,故结束顺序不同 # 但是该程序其实只有一个线程 """ # 异步访问的url列表 urls = [‘https://github.com/‘, ‘https://bbs.csdn.net/‘, ‘https://blog.csdn.net/‘] # 定义协程方法 greenlets = [gevent.spawn(run_task, url) for url in urls] # 添加协程任务,并且启动运行 gevent.joinall(greenlets=greenlets)