我有一个多处理应用程序,其中父进程创建一个队列并将其传递给工作进程。所有进程都使用此队列来创建用于记录的队列处理程序。有一个工作进程从此队列读取并进行日志记录。
工人进程持续检查父母是否还活着。问题是当我从命令行中杀死父进程时,除了一个之外,所有工作程序都被杀死。记录器过程也会终止。我不知道为什么一个进程继续执行。是因为队列中的任何锁等?如何在这种情况下正确退出?我正在使用
sys.exit(0)
退出。
答案 0 :(得分:0)
只有在没有其他机会时我才会使用sys.exit(0)
。干净地完成每个线程/进程总是更好。您的流程中将有一些while
循环。所以只需在break
进行,以便它可以结束。
在离开之前整理,即释放外部资源的所有句柄,例如文件,套接字,管道。
这些句柄中的某个位置可能是您看到的行为的原因。