-1

例如:

instances = [ClassName() for i in range(no_inst)]
for data in dataset:
    for inst in instances:
        inst.dosomething(data)

注意:实例不修改数据,因此实例之间不需要通信。

4

2 回答 2

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副作用,但是当涉及到多处理时我放松了我的立场,因为它很容易

于 2013-05-18T02:02:34.477 回答
0

您可以使用该threading接口创建一个Thread满足dosomething(data). 您可以为每个循环启动多个线程,调用run()以启动它们。建议然后将它们放入列表中,以便您可以检查它们的状态,直到全部完成。

于 2013-05-18T01:56:32.130 回答