Python:一个子进程能够暂停/恢复父进程吗?

4
我正在尝试制作一个温度监测模块,可以连续将当前温度保存到文件中,然后在其它任务完成后使用matplotlib绘制图形。我已经实现了这一功能,因此可以按照以下方式使用它:
with TemperatureMonitoring():
    # do stuff

当调用__enter__时,进程开始运行,这只是一个无限循环,它会休眠和写入文件,在调用__exit__时,进程终止并将文件绘制到屏幕上。
现在我想进行改进,因此我希望子进程控制父进程;如果温度过高时间太长,它将暂停并等待计算机冷却。这是我第一次使用multiprocessing模块,但似乎如果我暂停主进程,则子进程也会被暂停。因此,如果我达到了临界状态,它将无法自行取消暂停。因此,父进程需要能够在代码执行完成时终止子进程,而子进程需要能够在必要时暂停/恢复父进程。有没有明显的方法可以实现这一点?
2个回答

1

最干净的方法是使用双工的 multiprocessing.Pipe。父进程可以向子进程发送关闭命令,而子进程可以向父进程发送有关温度水平的通知。


0

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

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

当涉及到终止进程时,我建议在主循环中使用条件来执行,以便您可以关闭所有句柄。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接