Python 多重处理、终止和损坏队列

Python 多重处理、终止和损坏队列,python,multiprocessing,terminate,Python,Multiprocessing,Terminate,在查看python文档时,我遇到了以下问题: Terminate()如果在关联进程使用管道或队列时使用此方法,则该管道或队列可能会损坏,并可能被其他进程无法使用。类似地,如果进程获取了锁或信号量等,那么终止它可能会导致其他进程死锁 这基本上是说,如果您终止使用队列、管道或类似对象的进程,您将面临结构损坏的风险 我有几个问题要问 如果发生损坏,另一个试图从管道、队列或类似对象检索数据的进程会发生什么情况 流程如何检查是否存在损坏 如果知道另一个进程已终止,死锁是否可以以任何方式解决 我理解您应该始

在查看python文档时,我遇到了以下问题:

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

这基本上是说,如果您终止使用队列、管道或类似对象的进程,您将面临结构损坏的风险

我有几个问题要问

  • 如果发生损坏,另一个试图从管道、队列或类似对象检索数据的进程会发生什么情况
  • 流程如何检查是否存在损坏
  • 如果知道另一个进程已终止,死锁是否可以以任何方式解决

  • 我理解您应该始终尝试不使用terminate,但这适用于除此之外无法执行任何操作的情况,您可以向传递的数据块添加校验和,并对其进行检查以确认未发生数据损坏。这是任何有数据损坏风险的数据通信中的常见技术。您可以考虑使用md5或crc32校验和之类的方法。

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


    感谢@MarwanAlsabbagh的建议。

    1。它会引发IOError:[Errno 32]管道破裂