多線程爬蟲介紹

一個進程裏只有一個線程,咱們稱之爲單線程爬蟲。單線程爬蟲每次只訪問一個頁面,不能充分利用電腦的網絡帶寬。一個頁面最多也就幾百KB,因此爬蟲在爬取一個頁面的時候,多出來的網速就浪費掉了。網絡

而若是咱們可讓爬蟲同時訪問10個頁面,就至關於咱們的爬取速度提升了10倍。這個時候就須要使用多線程技術了。多線程

這裏有一點要強調一下,Python這門語言在設計上的時候,有一個GIL鎖。這個東西讓Python的多線程都是僞多線程。本質上仍是隻有一個線程,可是這個線程每一個事情只作幾毫秒,作完幾秒救保存線程,換作其餘事情幾毫秒,換一輪下來繼續回到第一件事上,恢復線程再作幾秒,繼續換……性能

在《X戰警-天啓》中,萬磁王他兒子從教授的學院裏面救出了很是多的人。因爲他速度很是的快,因此雖然它是一我的一我的救的,可是對其餘人來講,就感受像是所有同時移動到了學校外面去了同樣。spa

這樣微觀上的單線程,在宏觀上看起來就像是同時在作幾件事。這種機制在IO密集型的操做上面影響也不大,可是在CPU計算密集型的操做上面,因爲CPU原本十分繁忙,這就會對性能產生很是大的影響。因此涉及到計算密集型的程序,就須要使用多進程,Python的多進程不受GIL鎖的影響。線程

爬蟲屬於IO密集型的程序,因此使用多線程不會不會對性能形成太大的影響。設計

 

轉載:極客學院某位老師的話(修改了一點點)。進程

相關文章
相關標籤/搜索