私はいくつかのディレクトリ内のファイルを巡回し、スレッドを開始し、ファイルに対して何かを行うスクリプトを作成しました。これらは時間がかかり、高価な操作であるため、私はそれを実行しているマシン上で見つかったCPUの数より1つ少ない数にスレッドの数を制限しました。次に、アクティブなスレッドの数が常にチェックされ、空き容量がある場合は別のスレッドが開始されます。マシン上のCPUの数を返す関数については、thisを使用しました。Pythonのスレッドを制限する正規/標準的な方法
ncpus = detectCPUs()
for (dirpath, dirnames, filenames) in os.walk(path_to_root):
for filename in filenames:
while True:
if threading.activeCount() < ncpus - 1:
MyThread(dirpath, filename).start()
break
else:
time.sleep(100)
私は自動的に私がスレッドとCPUの数のタブを維持することなく、私のためにこれを行うだろうthreading
ライブラリの関数や他の場所pythonでがあることを感じを脱出することはできません。誰にも分かるだろうか?あるいは、熟練した退役軍人がそれをする方法を指摘していますか?
いくつかの制限があります。私が使用している共有マシンには、Python 2.5がインストールされているだけで、インストールにはroot特権がありません。ですから、multiprocessing
またはPython 2.6以上を必要とする素敵なライブラリは問題になりません。
スレッドプールのようなものは私の心に来て、あなたのスレッドジョブを積み重ね、古いものがバッチ処理されるようになるかもしれません...しかし、私は答えが分かりません。 – progo