最近、ECサイトのデータをクロールしようと計画しています。代理店や流通のことは考えず、まずは効率の話をしましょう(もちろん急ぎすぎるとブロックされます)。ポイント。通常の状況では、初心者が最初に考えるのは、シングルスレッドの for ループです。次に、for ループで 5 つのスレッドを直接開くことを考えます。問題は、URL リクエストが返されない場合、残りはただ待つことになるということです。このように複数のスレッドを使用しても意味がありません。
パフォーマンスに関する考慮事項
マルチスレッドまたはマルチプロセスを使用することが確実な場合、マルチスレッドを使用する必要があります。 Python の GIL ロックのせいで、マルチプロセッシングとマルチスレッドに対して特定の偏見を持っている人もいます。これら 2 つの違いについて話しましょう。
マルチスレッド
一般に、.py ファイルを開始することは、プロセスを開始することと同じであり、プロセス内ではデフォルトで 1 つのスレッドが動作します。私たちは、プロセス内で複数のスレッドを有効にする多くのスレッド手段を使用します。
しかし、ここで疑問が生じます。なぜマルチスレッドを使用するのでしょうか?
プロセスを開始するときに、家に相当するメモリ領域を作成する必要があることはわかっています。私たちはこの家で作業しなければなりません。人をスレッドと考えることができます。あなたの家 通常の状況で 10 人用のスペースと 20 人用のスペースに違いがあるのは、パイプなどのスレッドがデフォルトで通信できることがわかっているためです (プロセスはデフォルトでは通信できませんが、テクノロジを使用して実現できます)。 )。マルチスレッドを使用すると、計算データの正確性を保証できるため、GIL ロックは同時に 1 つのスレッドのみが計算できるようにするようです。
GIL ロックは、たとえば、この部屋で決済される口座がある場合、同時にその口座を計算できるのは 1 人だけであるため、基本的に理解できます。このアカウントには 5 人がいます。明確に計算できれば、必要なのは 10 平方メートルの部屋だけです。なぜ 10 人を雇って 20 平方メートルを費やす必要があるのでしょうか?したがって、スレッドを多く開くほど良いというわけではありません。ただし、ただし、この計算をするときに全員が頭を使う(CPU 計算)必要はありません。他のこと(たとえば、5 人で作業を分担して各パートを計算するなど)を行うこともできます。計算完了後に結果を記録します。後の調整のための台帳では、全員が自分の台帳を持っているため、マルチスレッドは IO 操作に適しています。IO 操作に適しているからといって、人数が多ければ多いほど良いというわけではないことに注意してください。 、より良いので、 これ 金額は依然として実際の状況によって異なります 。
以上がPython クローラーにはいくつのスレッドが適切ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。