熱線電話:13121318867

登錄
首頁精彩閱讀難怪協程爬蟲那么快,原來是因為
難怪協程爬蟲那么快,原來是因為
2022-08-10
收藏

作者:小K

來源:麥叔編程

?

Python三分鐘第132篇讓大家從協程爬蟲計算密集型和IO密集型兩個主題中選取一個來講解,很多小伙伴表示太難了。

小孩子才做選擇,不能全要嗎?

?

感謝大家的支持,今天的Python三分鐘給大家介紹下計算密集型和IO密集型。

這個知識比較偏硬件,如果掌握這兩個知識點,相信大家在異步、并發、并行編程會有更大的進步。

?

今天的文章也不會出現任何代碼,也適合不會Python的同學食用。

?

什么是CPU密集型

CPU密集型也叫計算密集型,這部分工作基本上都是都是CPU完成的。

例如用電腦計算1億個數的平均數。

CPU密集表示某任務有著大量的運算且沒有阻塞(休息時間),CPU始終全速運行。

最直觀的體現形式是任務開啟后,CPU溫度將急劇上升,散熱風扇運轉速度也會變快。

什么是IO密集型

與CPU密集型不同,IO密集型工作基本是由磁盤等儲存設備完成的。

IO是輸入、輸出的縮寫(Input、Output)。

像我們用U盤往電腦拷貝大型文件,那是最經典的IO密集型任務。

網絡爬蟲屬于CPU密集型任務還是IO密集型任務?

這個問題不太好回答,要從實際情況進行分析,如果爬蟲需要突破對方服務器的安全措施(反爬),可能也會涉及大量的解密計算。

這樣的爬蟲應該要被分到CPU密集型任務里去的。

如果就像上篇文章中的協程爬蟲那樣,只是負責發送請求和接收請求,CPU參與度不高。

這樣的爬蟲應該要被分到IO密集型任務里去的。

但是協程爬蟲存在大量的計算任務,那。。。。。沒啥必要用協程了。

?

如果Baidu的服務器響應速度能再快一點,我相信我們的協程爬蟲速度也會更快一點。

?

Python的GIL

說到計算密集型就不得不提Python的GIL(全局解釋器鎖)。

因為GIL的存在,CPython解釋器只能運行在一個進程之中,CPython沒有真正的多進程,所以硬件上CPU核心再怎么多也沒什么用,CPython只能用到一個核。

計算密集型是CPython的軟肋。

但是CPython在處理IO密集型任務還是非常棒的,尤其引入了協程之后。

如果你對GIL的概念一知半解,請留言GIL,我將會專門開一期對其講解。

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢