マルチプロセッシングを使用してこれと同等のことを行う簡単な方法はありますか?
for sim in sim_list:
sim.run()
ここで、sim_list の要素は「シミュレーション」オブジェクトであり、run() はオブジェクトの属性を変更するシミュレーション クラスのメソッドです。例えば:
class simulation:
def __init__(self):
self.state['done']=False
self.cmd="program"
def run(self):
subprocess.call(self.cmd)
self.state['done']=True
sim_list 内のすべての sim は独立しているため、戦略はスレッドセーフである必要はありません。
私は次のことを試しましたが、引数がディープコピーによって渡され、その場で変更されていないため、明らかに欠陥があります。
from multiprocessing import Process
for sim in sim_list:
b = Process(target=simulation.run, args=[sim])
b.start()
b.join()