gevent實現異步
阿新 • • 發佈:2019-04-09
exc () 只有一個 操作 不同 方法 http log gree
# 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)
gevent實現異步