[英]Python: can a child process pause/resume the parent
我正在尝试制作一个温度监控模块,将当前温度连续保存到文件中,然后使用matplotlib绘制一个图形,无论它用于完成任何内容。 我有这个功能,所以我可以使用它:
with TemperatureMonitoring():
# do stuff
当__enter__
被调用时,进程开始,这只是一个休眠和写入文件的无限循环,当__exit__
被调用时,进程终止,文件被绘制到屏幕上。
现在我想进行改进,所以我想让子进程控制成为父进程; 如果温度太高太久,它会暂停并等待电脑冷却。 这是我第一次使用multiprocessing
模块,但似乎如果我暂停主进程,孩子也会暂停。 因此,如果我达到临界状态,它将无法取消其自身。 因此,父代必须能够在代码完成执行时终止子代,并且子代表必须能够在必要时暂停/恢复父代。 有没有明显的方法来实现这一目标?
最简单的方法是使用双工multiprocessing.Pipe
。 multiprocessing.Pipe
。 然后,父母可以向孩子发送命令以关闭,并且孩子可以向父母发送关于温度水平的通知。
使用共享内存是最快的IPC(进程间通信)。
您可以使用posix_ipc包来建立共享内存和信号量。 共享内存将保持温度和信号量将让您使进程等待并继续。
当谈到终止进程时,我建议使用主循环中的条件执行该进程。 这样你就可以关闭所有手柄了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.