大規模なデータ マイニングを実行したいと考えています。このためには、高速クローラーが必要です。必要なのは、Web ページをダウンロードし、リンクを抽出して再帰的にたどることだけですが、同じ URL に 2 回アクセスする必要はありません。基本的に、ループは避けたいです。
Python で既にクローラーを作成しましたが、遅すぎます。100Mbit 回線を飽和させることができません。最高速度は ~40 URL/秒です。そして、何らかの理由で、より良い結果を得るのが難しい. Pythonのマルチスレッド/ソケットに問題があるようです。Python のガベージ コレクターでも問題が発生しましたが、それは解決可能でした。ところで、CPUはボトルネックではありません。
では、可能な限り高速なクローラーを作成するには何を使用すればよいでしょうか?また、クロール中のループを回避するための最善の解決策は何でしょうか?
multiprocessing
編集: 解決策は、threading
モジュールを結合することでした。最良の効果を得るには、プロセスごとに複数のスレッドで複数のプロセスを生成します。1 つのプロセスで複数のスレッドを生成することは効果的ではなく、スレッドが 1 つだけの複数のプロセスが大量のメモリを消費します。