3

大量のチェックを行う必要がある簡単なスクリプトを書いています。すべてのチェックは独立しているので、複数のスレッドに入れることにしました。ただし、スクリプトが設定されるマシンの速度はわかりません。ターゲットマシンの基本的なパラメータをチェックするための非常に優れたutilをすでに見つけましたが、スレッドの最大の実用的な量を決定する方法があるかどうか疑問に思っています(つまり、新しいスレッドがプロセスを高速化するのではなく、低速化し始める瞬間を意味します)?

4

3 に答える 3

4

ターゲットマシンに搭載されているコアの数を確認できます

import multiprocessing

multiprocessing.cpu_count()

multiprocessingタスクを管理することを選択した場合はPool、システムの負荷とに応じてワーカースレッドのサイズまたは数を設定できます.cpu_count()

あなたがあなたのプログラムのために選ぶのに良い数は何であるかに関して、あなたはあなた自身のために決定しなければならないでしょう:-)

于 2013-02-24T22:21:04.523 に答える
2

Pythonでの速度向上を目的としたスレッドは、特にCPUにバインドされた操作の場合、それほど良い考えではありません。GILは、複数のCPUによる潜在的なパフォーマンスの向上を確認します(その数は、スレッド化による速度向上の理論上の限界ですが、実際にはYMMVです)。

真に独立した「チェック」の場合は、マルチプロセッシングを検討する方がはるかに優れています。

于 2013-02-24T22:55:21.033 に答える
0

あなたはあなたの最後の文にあなたの答えがあるかもしれません。スレッドの追加によって実行時間が変化するため、実行時間を測定できます。また、スレッドを適応的に追加または削除(および削除されたスレッドのジョブを再キューイング)して、必要な実行時間を維持します。洗練された制御理論を取得したい場合は。

于 2013-02-24T22:20:41.420 に答える