Python でのマルチプロセッシングとマルチスレッドに関する情報を見つけましたが、基本的な概念が理解できず、見つかったすべての例は、私がやろうとしていることよりも難しいものです。
実行する必要がある X 個の独立したプログラムがあります。最初の Y 個のプログラムを起動したい (ここで、Y はコンピューターのコア数で、X>>Y)。独立したプログラムの 1 つが完了するとすぐに、次のプログラムを次に利用可能なコアで実行したいと考えています。これは簡単だと思っていましたが、行き詰まっています。この問題を解決するための助けをいただければ幸いです。
編集:回答ありがとうございます。また、共有したい joblib モジュールを使用した別のソリューションも見つけました。入力パラメーター (a0、b0、c0) のさまざまな組み合わせで実行する「program.py」というスクリプトがあり、すべてのコアを使用するとします。これは解決策です。
import os
from joblib import Parallel, delayed
a0 = arange(0.1,1.1,0.1)
b0 = arange(-1.5,-0.4,0.1)
c0 = arange(1.,5.,0.1)
params = []
for i in range(len(a0)):
for j in range(len(b0)):
for k in range(len(c0)):
params.append((a0[i],b0[j],c0[k]))
def func(parameters):
s = 'python program.py %g %g %g' % parameters[0],parameters[1],parameters[2])
command = os.system(s)
return command
output = Parallel(n_jobs=-1,verbose=1000)(delayed(func)(i) for i in params)