当输入列表超出一定长度时,多处理代码挂起

时间:2016-10-30 20:32:08

标签: python multiprocessing

我一直在玩多处理模块,以便从实现方面获得更好的理解。下面的代码执行以下序列,然后是并行方式:

生成一组随机数。每个数字在指数函数中用作常量。目标是为每个随机数找到一个标量,使得指数函数的积分为20。

以下代码似乎有效。但是,一旦.toggle()的值设置为500,代码就会挂起,我不明白为什么。对于它的价值,这是在一台Windows机器上,一切都在Spyder中运行。

num

1 个答案:

答案 0 :(得分:2)

您在队列中放置的对象太大。在提供队列的缓冲区为空之前,工作进程不会终止,直到父进程从队列中读取才会发生这种情况,这将在join()之后发生,等待 - >死锁。

这是描述: “An example which will deadlock is the following.” 因此,如果移动循环,问题就会消失

for p in procs:
    p.join()

for i in range(len(procs)): - 循环之后。

相关问题