首頁(yè)常見問題正文

寫爬蟲應(yīng)該用多線程還是多進(jìn)程?為什么?

更新時(shí)間:2023-03-13 來源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  多進(jìn)程爬蟲一般也被視為分布式爬蟲的基礎(chǔ),在單機(jī)上可以使用。通常來說大型網(wǎng)站采用分布式來部署服務(wù)器,能夠采用多進(jìn)程同時(shí)間在不同的服務(wù)器上進(jìn)行爬取。

  多線程爬蟲的優(yōu)勢(shì)如下:

  1)有效利用CPU時(shí)間。

  2)針對(duì)沒有反爬蟲限制的網(wǎng)站,下載速度可以多倍增加。

  3)極大減小下載出錯(cuò)、阻塞對(duì)抓取速度的影響,整體上提高下載的速度。

1678675089247_寫爬蟲用多線程還是多進(jìn)程?.jpg

  局限性:

  1)對(duì)編碼要求更高,復(fù)雜度也隨之上升。

  2)針對(duì)存在反爬的網(wǎng)站,速度提升有限。

  3)線程之間的資源競(jìng)爭(zhēng)更加激烈。

  4)線程越多,每個(gè)線程獲得的時(shí)間就越少,同時(shí)線程的切換更頻繁也帶來額外的開銷。

  在實(shí)際的數(shù)據(jù)采集過程中,既考慮網(wǎng)速和響應(yīng)的問題,也需要考慮自身機(jī)器的硬件情況,來決定設(shè)置多線程或者多進(jìn)程。因此,如果需要爬取的數(shù)據(jù)任務(wù)量很大,那么可以考慮多進(jìn)程+多線程的機(jī)制。先創(chuàng)建多個(gè)進(jìn)程完成不同的任務(wù),然后每個(gè)進(jìn)程內(nèi)部再創(chuàng)建多個(gè)線程,最后完成需要爬取到的數(shù)據(jù)。

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!