# 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)