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