1、Python里面一般用gevent實現協程協程,
而協程就是在等待的時候切換去做別的操作,相當於將一個線程分塊,充分利用資源
(1)低級版協程的實現
import gevent def test1(): print(1,2) gevent.sleep(0)#執行到這里的時候切換去函數test2 print(3,4) def test2(): print(5,6) gevent.sleep(0) print(7,8) gevent.joinall( [gevent.spawn(test1),gevent.spawn(test2)] )#在函數test1等待的時候,協程去執行了函數test2
結果如圖
這里屬於手動切換
(2)高級版協程
from gevent import monkey;monkey.patch_all()# 用來在運行時動態修改已有的代碼,而不需要修改原始代碼。 import gevent import requests def f(url): print('GET: %s' % url) html = requests.get(url).text print(url,len(html)) gevent.joinall([ gevent.spawn(f,'http://i.maxthon.cn/'),#先執行這個函數,發送請求,等待的時候發送第二個請求 gevent.spawn(f,'http://www.jianshu.com/u/3cfeb3395a95'), gevent.spawn(f,'http://edu.51cto.com/?jydh'), ])
執行結果如圖