協程任務流程

協程爬蟲流程分析

在這裏插入圖片描述

協程工作流程分析

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章