繁体   English   中英

父出口上的Python多处理队列

[英]Python Multiprocessing Queue on Parent Exit

我的问题的要点是当父(这种情况下的守护进程)被杀死时多处理队列会发生什么。

我有一个后台运行的守护进程,为子进程排队作业:

class manager(Daemon):
    def run(self):
        someQueue = MP.Queue()

        someChild = MP.Process(target=someCode, args=(someArgs))
        someChild.start()
        ...

如果管理器被杀死(假设它没有尝试使用someQueue并因此如文档中提到的那样损坏它),那么无论如何都要恢复队列中的数据?

我看到的两个理论解决方案是在退出这个子进程之前清理someQueue中的someChild 同时转储队列以便我可以在管理器退出时恢复队列状态也可以解决我的问题。 但是,在实施之前,我们很高兴能够朝着正确的方向前进。

谢谢,

听起来你想要持久/可靠的排队。 我相信multiprocessing.Queue类是用管道实现的(就像你使用popen()调用一样),所以数据是相对短暂的,你可能不得不做一些操作系统级别的技巧来获取内容。 您可能会考虑编写自己的持久队列类,该类使用文件系统文件(假设您的操作系统和文件系统支持锁定)来存储队列内容。 然后,您可以提供所需的所有分析工具来检查队列并恢复未处理的数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM