2

皆さん。私はファイルPythonを持っています(例:run.py)。このプログラムにはいくつかのパラメータ(python run.py param1 param2 ...)があり、各タプルパラメータは設定です。今、できるだけ早くすべてを終了するために、多くの設定を同時に実行する必要があります。私は次のようにファイルrun.shを書きました:マルチコアマシンでマルチプロセスを効果的に実行するスクリプトの作成方法

python run.py setting1 & 
python run.py setting2 & 
#more setting 
... 
wait 

このファイルはすべてのプロセスを同時に実行しますか?そして、私はマシン64コアCPU上で実行されます。私はここにいくつかの質問があります:

  1. 各プロセスは1つのコアで実行されるかどうか?
  2. そうでない場合、どうすればいいですか?
  3. 私は、コアごとにプロセスを実行することができます設定1で実行している時間が、私はちょうど、個々のプロセスを実行したときに実行している時間に等しくなります場合は、次のpython run.py設定1
+0

** GNU並列**をご覧ください。すぐに実行できるプロセスの数を制御し、引数の順列を生成することもできます。 '[gnu-parallel]'のStackOverflowで検索し、 'newest'をクリックしてください。 –

答えて

0

あなたはmultiprocessingモジュールを使用しようとしましたか?あなたが並行していくつかの機能をwork(arg1, arg2)を複数回実行したいと仮定すると、

、あなたの機能のすべてが互いに非常に異なって見える場合、あなたは、書面で逃げることができ、この

import multiprocessing 
p = multiprocessing.Pool(multiprocessing.cpu_count() 
results = p.starmap(work, [(arg11, arg12), (arg21, arg22)....] 
# do something with the list of results 

のようなもので終わるだろう関数ラッパーは次のようになります。

def wrapper(dict_args, inner_function): 
    return inner_function(dict_args) 
# then launch the multiprocessing mapping 

p.starmap(wrapper, [({'arg1': v1, 'arg2': v2}, job1), ({'foo': bar}, job2)..] 
+0

ありがとう、私は試してみます。しかし、あなたが知っているように、私はただ一つのファイルだけでなく、多くのファイルにも依存しています。たとえばジョブ1の場合はrun1.py、ジョブ2の場合はrun2.py ... –

関連する問題