協程爬蟲流程分析
協程工作流程分析
gevent.spawn()方法:創建並啓動協程
gevent.joinall()方法:等待所有協程執行完畢
# 打猴子補丁,在遇到阻塞時,實現多個協程任務自動切換
from gevent import monkey
monkey.patch_all()
import gevent
import time
# 定義任務函數,表示需要執行的任務
def task(msg):
for i in range(5):
print(msg)
if i%2==0:
time.sleep(0.5)
# 在默認情況下,spawn遇到阻塞不會自動切換,
# 如果希望自動切換,需要打上猴子補丁
# 一般情況,猴子補丁都會打在最上面
g1 = gevent.spawn(task, '任務一')
g2 = gevent.spawn(task, '任務二')
# 讓主線程等待,joinall中協程任務完成
gevent.joinall(
(g1, g2)
)