協程
協程:協助程式,執行緒和程序都是搶占式特點,執行緒和程序的切換我們是不能參
與的。而協程是非搶占式特點,協程也存在著切換,這種切換是由我們使用者來控制的。
協程主解決的是 io 的操作。
協程,又稱微執行緒,纖程。英文名 coroutine。
優點 1: 協程極高的執行效率。因為子程式切換不是執行緒切換,而是由程式自身
控制,因此,沒有執行緒切換的開銷,和多執行緒比,執行緒數量越多,協程的效能優
勢就越明顯。
優點 2: 不需要多執行緒的鎖機制,因為只有乙個執行緒,也不存在同時寫變數衝突,
在協程中控制共享資源不加鎖,只需要判斷狀態就好了,所以執行效率比多執行緒
高很多。
因為協程是乙個執行緒執行,那怎麼利用多核 cpu 呢?最簡單的方法是多程序+
協程,既充分利用多核,又充分發揮協程的高效率,可獲得極高的效能。
下面是例項:
import time
from greenlet import greenlet
def concumer(name):
while true:
baozi = yield#baozi = n
print(』%s吃了包子%d』%(name,baozi))
time.sleep(1)
def producer():
r = c1.next()
r = c2.next()
n = 1
while true:
print(『廚師一下子生產了2個包子』)
c1.send(n)
c2.send(n+1)
n = n+2
ifname== 『main』:
c1 = concumer(『c1』)
c2 = concumer(『c2』)
p = producer()
你的夢想換了多少種了,你的計畫和口號寫了多少本日記了,你的改變自己喊了多少年了,你現在多大了,你還有多少時間和資本去繼續這些無休止的空話和幻想,千萬別等到垂老的時候才去後悔自己原來一直都是那樣漫無目的地活著,那麼從現在開始給自己認定一條道,努力走下去吧。
python協程與非同步協程
在前面幾個部落格中我們一一對應解決了消費者消費的速度跟不上生產者,浪費我們大量的時間去等待的問題,在這裡,針對業務邏輯比較耗時間的問題,我們還有除了多程序之外更優的解決方式,那就是協程和非同步協程。在引入這個概念之前我們先看 看這個圖 從這個我們可以看出來,假如來了9個任務,即使我們開了多程序,在業...
例項講解python中的協程
python協程 執行緒和程序的操作是由程式觸發系統介面,最後的執行者是系統 協程的操作則是程式設計師。協程存在的意義 對於多執行緒應用,cpu通過切片的方式來切換執行緒間的執行,執行緒切換時需要耗時 儲存狀態,下次www.cppcns.com繼續 協程,則只使用乙個執行緒,在乙個執行緒中規定某個 ...
python協程使用 協程的案例
概念 使用者層面在乙個執行緒中進行多工切換的機制,比執行緒更加輕量級 實現併發量更大 協程的使用 使用第三方庫 gevent gevent 是乙個基於協程的 python 網路庫,在遇到 io 阻塞時,程式會自動進行切換,可以讓我們用同步的放肆寫非同步 io 協程的使用 from gevent im...