好!从文档:
警告如上所述,如果子进程已将项目放入队列中(并且尚未使用JoinableQueue.cancel_join_thread),则该进程将不会终止,直到所有缓冲的项目都已刷新到管道中为止。这意味着,如果您尝试加入该进程,则可能会陷入僵局,除非您确定已放入队列中的所有项目都已消耗完。同样,如果子进程是非守护进程,则当父进程尝试加入其所有非守护进程子进程时,其父进程可能会在退出时挂起。请注意,使用管理器创建的队列不存在此问题。请参阅编程指南。
正如我在评论前面提到的,代码试图
.join()处理 之前 的
done_queue队列排出-
这在一个时髦的方式改变后的代码,以确保
done_queue在之前倒掉
.join()“荷兰国际集团,该代码工作罚款一百万的项目。
因此,这是一个飞行员错误的案例,尽管还很模糊。至于为什么行为取决于传递给的数字
main(x),这是无法预测的:它取决于内部缓冲的方式。好好玩 ;-)



