0

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

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

    sys.exit(0)

退出。

4

1 回答 1

0

sys.exit(0)只会在没有其他机会的情况下使用。干净地完成每个线程/进程总是更好。您的流程中会有一些while循环。所以就在break那里做,这样它就可以结束了。

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

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

于 2013-02-11T08:36:21.700 回答