例如:
instances = [ClassName() for i in range(no_inst)]
for data in dataset:
for inst in instances:
inst.dosomething(data)
注意:实例不会修改数据,因此实例之间不需要通信。
答案 0 :(得分:2)
我知道的最简单的方式是使用multiprocessing.Pool.map
,就像使用map
内置版一样。你只需编写一个函数来完成你想要完成的任务,它就可以处理所有的并行性:
import multiprocessing as mp
instances = [ClassName() for i in range(no_inst)]
def dosomething(inst):
for data in dataset:
inst.dosomething(data)
num_procs = 4 #however many processors you'll use
pool = mp.Pool(num_procs)
pool.map(dosomething,instances)
有一些问题 - lambda
函数在这里不起作用,因为它们不是可选择的。这也会返回None
的列表(因为这是dosomething
返回的内容) - 通常我不喜欢使用列表推导或map
来表示副作用,但我放松了在多处理方面的立场只是因为它如此简单。
答案 1 :(得分:0)
您可以使用threading
界面创建一个满足Thread
的{{1}}类。您可以为每个循环启动多个线程,调用dosomething(data)
启动它们。建议将它们放入列表中,以便在完成所有操作之前检查它们的状态。