【发布时间】:2012-07-11 16:12:37
【问题描述】:
我创建了 100 个子进程
proc_list = [
Process(target = simulator, args=(result_queue,))
for i in xrange(100)]
并启动它们
for proc in proc_list: proc.start()
每个进程在做一些处理后放入result_queue(multiprocessing.Queue的实例)10000个元组。
def simulate(alg_instance, image_ids, gamma, results,
simulations, sim_semaphore):
(rs, qs, t_us) = alg_instance.simulate_multiple(image_ids, gamma,
simulations)
all_tuples = zip(rs, qs, t_us)
for result in all_tuples:
results.put(result)
sim_semaphore.release()
我应该(?)在队列中获得 1000000 个元组,但经过多次运行后,我得到了这些(样本)大小: 14912 19563 12952 13524 7487 18350 15986 11928 14281 14282 7317
有什么建议吗?
【问题讨论】:
-
你确定
simulate()实际返回 10,000 个元组吗? -
是的。对其进行了广泛的测试...
-
您是否加入了每个流程以确保您正在等待所有流程完成?
-
命名变量
tuple是一个非常糟糕的主意。tuple是一种基本类型,您不应在命名空间中将其替换为其他类型。 -
@K.Brafford 我还没有真正将它们命名为元组——只是写了函数的草图。我已经更新了功能代码。
标签: python queue multiprocessing