検索

ホームページ  >  に質問  >  本文

Python クローラーの解析効率を向上させるにはどうすればよいですか?

現在、Windows 環境でマルチスレッド クロールを使用しています。
解析には beautifulsoup lxml を使用しています。

N クロール スレッド -> 解析キュー -> 1 解析スレッド -> ストレージ キュー -> 1 ストレージ スレッド

実行プログラム全体の効率は、計算量の多い解析スレッドに依存するため、解析スレッドの数だけを増やすと、スレッド切り替えのオーバーヘッドが増加し、速度が低下します。

解析効率を大幅に向上させる方法はありますか?

2 つの太ももの指示に従って、使用する準備をします
非同期クローリング -> 解析キュー -> N 解析プロセス -> ストレージ キュー -> ストレージ スレッド

仕事を始める準備ができました

世界只因有你世界只因有你2728日前753

全員に返信(3)返信します

  • 为情所困

    为情所困2017-06-12 09:22:36

    実際、あなたが先に書き直したかと思いますN个爬取线程 可以换成协程/线程池实现, 因为你在频繁创建线程本省一种性能耗费, 用线程池虽然可以减少这部分的损耗, 但是上下文切换还是无法避免, 所以协程这方面, 应该是比较合适的.
    1个解析线程 换成 进程池,多开几个进程去计算密集处理, 其余应该可以不用改, 如果还想再搞, 将核心部分用c/c++、お役に立てれば幸いです

    返事
    0
  • 怪我咯

    怪我咯2017-06-12 09:22:36

    私のアプローチはマルチプロセスです。マルチプロセスの利点は、単一マシンのパフォーマンスが十分ではない場合に、いつでも分散クローラに切り替えることができることです。

    返事
    0
  • 淡淡烟草味

    淡淡烟草味2017-06-12 09:22:36

    tornade 非同期クローラーはオンラインで見つけることができます。私はこれを使用しています

    返事
    0
  • キャンセル返事