微吼云上線多路互動直播服務 加速多場景互動直播落地
700
2025-04-07
協程介紹
協程:是單線程下的并發,又稱微線程,纖程。英文名Coroutine。一句話說明什么是協程:協程是一種用戶態的輕量級線程,即協程是由用戶程序自己控制調度的。、
需要強調的是:
#1.?python的線程屬于內核級別的,即由操作系統控制調度(如單線程遇到io或執行時間過長就會被迫交出cpu執行權限,切換其他線程運行) #2.?單線程內開啟協程,一旦遇到io,就會從應用程序級別(而非操作系統)控制切換,以此來提升效率(!!!非io操作的切換與效率無關)
對比操作系統控制線程的切換,用戶在單線程內控制協程的切換
優點如下:
#1.?協程的切換開銷更小,屬于程序級別的切換,操作系統完全感知不到,因而更加輕量級 #2.?單線程內就可以實現并發的效果,最大限度地利用cpu
缺點如下:
#1.?協程的本質是單線程下,無法利用多核,可以是一個程序開啟多個進程,每個進程內開啟多個線程,每個線程內開啟協程 #2.?協程指的是單個線程,因而一旦協程出現阻塞,將會阻塞整個線程
總結協程特點:
必須在只有一個單線程里實現并發
修改共享數據不需加鎖
用戶程序里自己保存多個控制流的上下文棧
附加:一個協程遇到IO操作自動切換到其它協程(如何實現檢測IO,yield、greenlet都無法實現,就用到了gevent模塊(select機制))
任務調度 Python
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。