您的位置:首頁>正文

協程是什麼?協程有什麼用?協程是雞肋?協程很強!只是你還不會

103456743

三:協程-gevent

greenlet已經實現了協程, 但是這個還的人工切換, 是不是覺得太麻煩了, 不要捉急, python還有一個比greenlet更強大的並且能夠自動切換任務的模組gevent

其原理是當一個greenlet遇到IO(指的是input output 輸入輸出, 比如網路、檔操作等)操作時, 比如訪問網路, 就自動切換到其他的greenlet, 等到IO操作完成, 再在適當的時候切換回來繼續執行。

由於IO操作非常耗時, 經常使程式處於等候狀態, 有了gevent為我們自動切換協程, 就保證總有greenlet在運行, 而不是等待IO

可以看到, 3個greenlet是依次運行而不是交替運行

gevent切換執行

四:進程、執行緒、協程對比

請仔細理解如下的通俗描述

他需要花一些財力物力製作一條生產線,這個生產線上有很多的器件以及材料這些所有的 為了能夠生產剪子而準備的資源稱之為:進程只有生產線是不能夠進行生產的,所以老闆的找個工人來進行生產,這個工人能夠利用這些材料最終一步步的將剪子做出來,這個來做事情的工人稱之為:執行緒這個老闆為了提高生產率,想到3種辦法:在這條生產線上多招些工人,一起來做剪子,這樣效率是成倍増長,即單進程 多執行緒方式老闆發現這條生產線上的工人不是越多越好,因為一條生產線的資源以及材料畢竟有限,所以老闆又花了些財力物力購置了另外一條生產線,然後再招些工人這樣效率又再一步提高了,即多進程 多執行緒方式老闆發現,現在已經有了很多條生產線,並且每條生產線上已經有很多工人了(即程式是多進程的,每個進程中又有多個執行緒),為了再次提高效率,老闆想了個損招,規定:如果某個員工在上班時臨時沒事或者再等待某些條件(比如等待另一個工人生產完謀道工序 之後他才能再次工作) ,那麼這個員工就利用這個時間去做其它的事情,那麼也就是說:如果一個執行緒等待某些條件,可以充分利用這個時間去做其它事情,其實這就是:協程方式

簡單總結

如有侵權請聯繫小編刪除!

四:進程、執行緒、協程對比

請仔細理解如下的通俗描述

他需要花一些財力物力製作一條生產線,這個生產線上有很多的器件以及材料這些所有的 為了能夠生產剪子而準備的資源稱之為:進程只有生產線是不能夠進行生產的,所以老闆的找個工人來進行生產,這個工人能夠利用這些材料最終一步步的將剪子做出來,這個來做事情的工人稱之為:執行緒這個老闆為了提高生產率,想到3種辦法:在這條生產線上多招些工人,一起來做剪子,這樣效率是成倍増長,即單進程 多執行緒方式老闆發現這條生產線上的工人不是越多越好,因為一條生產線的資源以及材料畢竟有限,所以老闆又花了些財力物力購置了另外一條生產線,然後再招些工人這樣效率又再一步提高了,即多進程 多執行緒方式老闆發現,現在已經有了很多條生產線,並且每條生產線上已經有很多工人了(即程式是多進程的,每個進程中又有多個執行緒),為了再次提高效率,老闆想了個損招,規定:如果某個員工在上班時臨時沒事或者再等待某些條件(比如等待另一個工人生產完謀道工序 之後他才能再次工作) ,那麼這個員工就利用這個時間去做其它的事情,那麼也就是說:如果一個執行緒等待某些條件,可以充分利用這個時間去做其它事情,其實這就是:協程方式

簡單總結

如有侵權請聯繫小編刪除!

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示