Windows 7 + python 2.6 を使用して、シミュレーション モデルを並行して実行しようとしています。ファイル ブラウザで実行可能ファイルをダブルクリックすると、複数のインスタンスを起動できます。ただし、非同期呼び出しでPopen
は、連続する各インスタンスが前のインスタンスに割り込みます。実行可能ファイルはコンソールにテキストを返しますが、対話的に結果を収集する必要はありません。
これが私がこれまでのところです:
import multiprocessing, subprocess
def run(c):
exe = os.path.join("<location>","folder",str(c),"program.exe")
run = os.path.join("<location>","folder",str(c),"run.dat")
subprocess.Popen([exe,run],creationflags = subprocess.CREATE_NEW_CONSOLE)
def main():
pool = multiprocessing.Pool(3)
for c in range(10):
pool.apply_async(run,(str(c),))
pool.close()
pool.join()
if __name__ == '__main__':
main()
解決策を求めてSOを精査した後、マルチプロセッシングを使用すると冗長になる可能性があることを知りましたが、動作するコアの数を制限する方法が必要です。