現(xiàn)在、Windows 環(huán)境でマルチスレッド クロールを使用しています。
解析には beautifulsoup lxml を使用しています。
N クロール スレッド -> 解析キュー -> 1 解析スレッド -> ストレージ キュー -> 1 ストレージ スレッド
実行プログラム全體の効率は、計(jì)算量の多い解析スレッドに依存するため、解析スレッドの數(shù)だけを増やすと、スレッド切り替えのオーバーヘッドが増加し、速度が低下します。
解析効率を大幅に向上させる方法はありますか?
2 つの太ももの指示に従って、使用する準(zhǔn)備をします
非同期クローリング -> 解析キュー -> N 解析プロセス -> ストレージ キュー -> ストレージ スレッド
仕事を始める準(zhǔn)備ができました
実際、あなたが先に書(shū)き直したかと思いますN個(gè)爬取線程
可以換成協(xié)程/線程池
實(shí)現(xiàn), 因?yàn)槟阍陬l繁創(chuàng)建線程本省一種性能耗費(fèi), 用線程池雖然可以減少這部分的損耗, 但是上下文切換還是無(wú)法避免, 所以協(xié)程這方面, 應(yīng)該是比較合適的.1個(gè)解析線程
換成 進(jìn)程池
,多開(kāi)幾個(gè)進(jìn)程去計(jì)算密集處理, 其余應(yīng)該可以不用改, 如果還想再搞, 將核心部分用c/c++
、お役に立てれば幸いです
私のアプローチはマルチプロセスです。マルチプロセスの利點(diǎn)は、単一マシンのパフォーマンスが十分ではない場(chǎng)合に、いつでも分散クローラに切り替えることができることです。