我一直在玩多处理模块,以便从实现方面获得更好的理解。下面的代码执行以下序列,然后是并行方式:
生成一组随机数。每个数字在指数函数中用作常量。目标是为每个随机数找到一个标量,使得指数函数的积分为20。
以下代码似乎有效。但是,一旦.toggle()
的值设置为500,代码就会挂起,我不明白为什么。对于它的价值,这是在一台Windows机器上,一切都在Spyder中运行。
num
答案 0 :(得分:2)
您在队列中放置的对象太大。在提供队列的缓冲区为空之前,工作进程不会终止,直到父进程从队列中读取才会发生这种情况,这将在join()之后发生,等待 - >死锁。
这是描述: “An example which will deadlock is the following.” 因此,如果移动循环,问题就会消失
for p in procs:
p.join()
在for i in range(len(procs)):
- 循环之后。