进程共享队列未正确终止

时间:2013-02-11 08:29:08

标签: python

我有一个多处理应用程序,其中父进程创建一个队列并将其传递给工作进程。所有进程都使用此队列来创建用于记录的队列处理程序。有一个工作进程从此队列读取并进行日志记录。

工人进程持续检查父母是否还活着。问题是当我从命令行中杀死父进程时,除了一个之外,所有工作程序都被杀死。记录器过程也会终止。我不知道为什么一个进程继续执行。是因为队列中的任何锁等?如何在这种情况下正确退出?我正在使用

    sys.exit(0)

退出。

1 个答案:

答案 0 :(得分:0)

只有在没有其他机会时我才会使用sys.exit(0)。干净地完成每个线程/进程总是更好。您的流程中将有一些while循环。所以只需在break进行,以便它可以结束。

在离开之前整理,即释放外部资源的所有句柄,例如文件,套接字,管道。

这些句柄中的某个位置可能是您看到的行为的原因。