小編給大家分享一下怎樣比較python爬蟲中的協(xié)程與多線程,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
進程、線程、協(xié)程對比
請仔細理解如下的通俗描述
有一個老板想要開個工廠進行生產某件商品(例如剪子)
他需要花一些財力物力制作一條生產線,這個生產線上有很多的器件以及材料這些所有的為了能夠生產剪子而準備的資源稱之為:進程
只有生產線是不能夠進行生產的,所以老板的找個工人來進行生產,這個工人能夠利用這些材料最終一步步的將剪子做出來,這個來做事情的工人稱之為:線程
這個老板為了提高生產率,想到3種辦法:
1、在這條生產線上多招些工人,一起來做剪子,這樣效率是成倍増長,即單進程 多線程方式
2、老板發(fā)現這條生產線上的工人不是越多越好,因為一條生產線的資源以及材料畢竟有限,所以老板又花了些財力物力購置了另外一條生產線,然后再招些工人這樣效率又再一步提高了,即多進程多線程方式
3、老板發(fā)現,現在已經有了很多條生產線,并且每條生產線上已經有很多工人了(即程序是多進程的,每個進程中又有多個線程),為了再次提高效率,老板想了個損招,規(guī)定:如果某個員工在上班時臨時沒事或者再等待某些條件(比如等待另一個工人生產完謀道工序 之后他才能再次工作) ,那么這個員工就利用這個時間去做其它的事情,那么也就是說:如果一個線程等待某些條件,可以充分利用這個時間去做其它事情,其實這就是:協(xié)程方式
簡單總結
l 進程是資源分配的單位
l 線程是操作系統(tǒng)調度的單位
l 進程切換需要的資源很較大,效率很低
l 線程切換需要的資源一般,效率一般(當然了在不考慮GIL的情況下)
l 協(xié)程切換任務資源很小,效率高
l 多進程、多線程根據cpu核數不一樣可能是并行的,但是協(xié)程是在一個線程中 所以是并發(fā)
以上是怎樣比較python爬蟲中的協(xié)程與多線程的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯行業(yè)資訊頻道!