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'),
])
執行結果如圖

