有没有一种简单的方法可以使用 Multiprocessing 来做同样的事情?
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 都是独立的,因此该策略不必是线程安全的。
我尝试了以下,这显然是有缺陷的,因为参数是由 deepcopy 传递的,并且没有就地修改。
from multiprocessing import Process
for sim in sim_list:
b = Process(target=simulation.run, args=[sim])
b.start()
b.join()