day32 gevent下的協程

2021-09-27 11:11:58 字數 952 閱讀 7442

先安裝gevent庫:

pycharm:file --> setting  --> project interpreter  --> 點右上角+號

from greenlet import greenlet

def test1():

print(12)

gr2.switch() # 切換到gr2執行

print(34)

gr2.switch()

def test2():

print(56)

gr1.switch() # 切換到gr1執行

print(78)

gr1 = greenlet(test1) # 先建立乙個物件,

gr2 = greenlet(test2)

gr1.switch() # gr1對角呼叫switch

gr2.switch()

gevent是乙個第三方庫,可以輕鬆通過gevent實現併發同步或非同步程式設計,在gevent中用到主要模式是greenlet,它是以c擴充套件模組形式接入python的輕量級協程,greenlet全部執行在主程式作業系統程序的內部,但是它們被稱為協作

分析:通過gevent下的joinall進行連線,要完成協程的動作,主要目的是遇到i/o阻塞時切換給其他執行緒使用,從而節省時間

import gevent

import time

def foo():

print('running in foo', time.ctime())

gevent.sleep(1) ##模擬i/o阻塞

print('explicit context switch to foo again', time.ctime())

def bar():

print('e

Python yield協程 gevent的理解

如 import time defa for i in range 10 yield time.sleep 1 defb for i in range 10 yield time.sleep 1 a1 a b1 b while1 next a1 next b1 由於yield的可以暫停函式的執行,也...

gevent實現簡單的協程

協程,又稱微執行緒。是指程式在執行執行緒a的時候如果碰到耗時操作,會自動切換到函式b執行,b碰到耗時操作自動切換回a。這一系列動作看起來像多執行緒,但是卻只有乙個執行緒執行。優勢 占用資源更少 多工占用資源排名 程序 執行緒 協程 執行效率極高,因為切換函式執行不是執行緒切換,而是程式本身控制,沒有...

Python程式中的協程操作 gevent模組

安裝 pip3 install gevent gevent 是乙個第三方庫,可以輕鬆通過gevent實現併發同步或非同步程式設計,在gevent中用到的主要模式是greenlet,它是以c擴充套件模組形式接入python的輕量級協程。greenlet全部執行在主程式作業系統程序的內部,但它們被協作式...