多处理,终止和破坏队列

Mat*_*our 6 python terminate multiprocessing

在看python doc的同时,multiprocessing.terminate()我发现了以下内容:

Terminate()如果在关联进程使用管道或队列时使用此方法,则管道或队列可能会损坏,并可能被其他进程无法使用.类似地,如果进程已获得锁或信号量等,则终止它可能导致其他进程死锁.

这基本上说如果你终止使用队列,管道或类似的进程你冒着结构变坏的风险.

我有几个问题,

  1. 如果发生损坏,尝试从PIPE,队列或类似数据中检索数据的另一个进程会发生什么?
  2. 流程如何检查是否存在损坏?
  3. 如果您知道另一个进程已被终止,是否可以以任何方式解决死锁?

我知道你应该总是尝试不使用终止,但这是针对那种除了这个你不能做任何事情的情况

Mat*_*our 1

好吧,这不是最好的解决方案,但我首先尽可能地处理了异常。我不想冒损坏的风险,因此我现在在可能发生损坏的情况下重新启动应用程序,以减少可能出现问题的可能性。

感谢@MarwanAlsabbagh 的建议。