Python:子进程可以暂停/恢复父进程

时间:2013-07-26 02:12:41

标签: python multiprocessing

我正在尝试制作一个温度监控模块,将当前温度连续保存到文件中,然后使用matplotlib绘制图形,无论它用于完成任何内容。我有这个功能,所以我可以使用它:

with TemperatureMonitoring():
    # do stuff

__enter__被调用时,进程开始,这只是一个无限循环,它会休眠并写入文件,当__exit__被调用时,进程终止,文件被绘制到屏幕。

现在我想进行改进,所以我想让子进程控制成为父进程;如果温度太高太久,它会暂停并等待电脑冷却。这是我第一次使用multiprocessing模块,但似乎如果我暂停主进程,孩子也会暂停。因此,如果我达到临界状态,它将无法取消其自身。因此,父代必须能够在代码完成执行时终止子代,并且子代表必须能够在必要时暂停/恢复父代。是否有明显的方法来实现这一目标?

2 个答案:

答案 0 :(得分:1)

最简单的方法是使用双工multiprocessing.Pipe。然后,父母可以向孩子发送命令以关闭,孩子可以向父母发送关于温度水平的通知。

答案 1 :(得分:0)

使用共享内存是最快的IPC(进程间通信)。

您可以使用posix_ipc包来建立共享内存和信号量。共享内存将保持温度和信号量将让您使进程等待并继续。

当谈到终止进程时,我建议使用主循环中的条件执行该进程。这样你就可以关闭所有手柄了。