2016-06-12 3 views
1

同じPythonプログラムを並列実行するにはどうすればよいですか(唯一の違いは時間差を表す2つの入力引数です)いくつかのデータ処理にはそれが必要です。それ以外の場合は終了までに時間がかかります異なる引数を指定して同じPythonプログラムを並列に実行する

私は10個のスクリプトを1つずつ手動で起動することで手動で行うことができますが、ソリューション+私はまた、 "メイン"のPythonプログラムでこれらのプログラムのそれぞれの引数を動的に定義したいと思います。

これを行う方法はありますか?

+0

@Merlin IO。それは約150,000サイクルのループの各サイクルで実行される複数のselect文とinsert文をデータベースから持ちます。 – Dennis

+0

@Merlinすべての選択は表Aから起こり、すべての挿入は表Bにあります。 – Dennis

+0

@ DennisはSQLでコードを書くことができます。アウトオブプロセスのデータベースへの移動はありません。 – Merlin

答えて

2

そうのように、メインの方法でスクリプトを囲みます。

def main(args): 
    a, b = args 
    # do something 


if __name__ == '__main__': 
    args = parse_arguments() 
    main(args) 

その後、あなたは異なる引数でmainメソッドを実行するために、multiprocessing.Poolと一緒に2番目のスクリプトを使用することができます。

from myscript import main 
from multiprocessing import Pool 



a = [1, 2, 3, 4, 5] 
b = [6, 7, 8, 9, 10] 

if __name__ == '__main__': 
    pool = Pool(4) # four parallel jobs 
    results = pool.map(main, zip(a, b)) 
+0

ありがとうマックスは、きれいでシンプルに見えます。 – Dennis

+1

私はいくつかの調整をした、前に働いていなかった。 – MaxNoe

+0

どのように5組の引数を指定しましたか?実行するパラレルジョブは4つしかありません。何か間違っていますか? – Dennis

関連する問題