爬蟲剛入門的童鞋,往往搞不清楚,什麼是多線程,什麼是多進程。
進程(process)和線程(thread)是操作系統的基本概念,但是它們比較抽象,确實不容易掌握。
線程是程序中一個單一的順序控制流程。進程内一個相對獨立的、可調度的執行單元,是系統獨立調度和分派CPU的基本單位指運行中的程序的調度單位。在單個程序中同時運行多個線程完成不同的工作,稱為多線程。
一個進程中可以包含若幹個線程,它們可以利用進程所擁有的資源,在引入線程的操作系統中,通常都是把進程作為分配資源的基本單位,而把線程作為獨立運行和獨立調度的基本單位。
由于線程比進程更小,基本上不擁有系統資源,故對它的調度所付出的開銷就會小得多,能更高效地提高系統内多個程序間并發執行的程度,從而顯著提高系統資源的利用率和吞吐量。
關于進程和線程,最經典的一句話是:
“進程是資源分配的最小單位,線程是CPU調度的最小單位”。
舉個簡單的例子:
在一台計算機中,我們可以同時打開許多軟件,比如開一個浏覽器,這就打開了一個浏覽器進程;在浏覽器中打開了網頁,有的網頁在播放電影、有的網頁顯示新聞、有的網頁在聊天,它們可以同時運行,互不幹擾,這就是浏覽器的多個線程。
爬蟲中線程與進程的關系如下圖所示:
那什麼場景下需要使用多進程、多線程呢?
1.采集的網站數據量很多
當要采集的網站數據量很大時,可使用多線程采集,成倍提高采集速度。
2.采集多個網站數據
想快速同時采集多個網站時,可使用多線程、多進程進行采集,既能降低服務器的壓力,又能提高采集效率。
ForeSpider數據采集分析引擎,采用全C 編寫的自研内核,可以實現高性能高效率快速采集。用戶可自行設置采集線程數和進程數,既可開多個線程進行采集,也可同時打開多個進程進行采集,實現快速采集海量網站數據,大大提高采集速度。
在ForeSpider爬蟲軟件中,線程數目越大,采集速度越大。一個爬蟲客戶端運行的時候,占用的操作系統資源,線程設置的越高,采集越快,但CPU和内存占用率越高,使用者可根據自身機器配置适當設置。
ForeSpider爬蟲服務器版本最多可開16個進程,多進程同時采集可智能并行分配采集任務。
ForeSpider采集速度如下所示:
①筆記本電腦400萬條/天
注:此速度為理論情況下的客觀數據,是指對方網站的帶寬正常,下載爬蟲的電腦帶寬正常,采集的網站不防爬的情況下
②服務器4000萬條/天
注:服務器分為單機多進程和多機多進程,次數據指的是單機多進程,2G内存對應一個進程,現規定每台服務器最多開16個進程。
③台式機單機采集能力可達4000-8000萬,日采集能力超過500萬。服務器集群環境的采集能力可達8億-16億,日采集能力超過4000萬。并行情況下可支撐百億以上規模數據鍊接,堪與百度等搜索引擎系統媲美。
l 前嗅簡介
前嗅大數據,國内領先的研發型大數據專家,多年來緻力于為大數據技術的研究與開發,自主研發了一整套從數據采集、分析、處理、管理到應用、營銷的大數據産品。前嗅緻力于打造國内第一家深度大數據平台!
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!