天天看點

python協程,asyncIO

協程,又稱微線程,纖程。英文名 coroutine。

協程的特點在于是一個線程執行,那和多線程比,協程有何優勢?

最大的優勢就是協程極高的執行效率。因為子程式切換不是線程切換,而是由程式自身控制,是以,沒有線程切換的開銷,和多線程比,線程數量越多,協程的性能優勢就越明顯。

第二大優勢就是不需要多線程的鎖機制,因為隻有一個線程,也不存在同時寫變量沖突,在協程中控制共享資源不加鎖,隻需要判斷狀态就好了,是以執行效率比多線程高很多。

傳統的生産者-消費者模型是一個線程寫消息,一個線程取消息,通過

鎖機制控制隊列和等待,但一不小心就可能死鎖。

如果改用協程,生産者生産消息後,直接通過 yield 跳轉到消費者開始

執行,待消費者執行完畢後,切換回生産者繼續生産,效率極高

python協程,asyncIO
python協程,asyncIO
python協程,asyncIO