【问题标题】:Processes sharing queue not terminating properly共享队列的进程未正确终止
【发布时间】:2013-02-11 16:36:21
【问题描述】:

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

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

    sys.exit(0)

退出。

【问题讨论】:

    标签: python


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多