提问人:hammertimeheck 提问时间:11/2/2023 最后编辑:hammertimeheck 更新时间:11/2/2023 访问量:12
在 python multiprocessing 中运行进程的自定义终止
Running a custom termination of a process in python multiprocessing
问:
可能有一个简单的方法可以做到这一点,但我对 python 比较陌生。从本质上讲,我在不同的文件中有两个函数。一个创建一个新进程来运行另一个进程。但是,在用户按键(回车键)时,我想发送一个信号来终止另一个进程。但是,在终止之前,我希望该进程运行某种保存函数然后终止,因此我不能使用多处理的内置终止。
下面是文件 1 中的示例代码:
import test_global
import msvcrt
import multiprocessing as mp
import time as t
if __name__ == "__main__":
process = mp.Process(target=test_global.test)
process.start()
while True:
#Emergency Stop
#Detect user key input
if msvcrt.kbhit():
#Detect enter key
if msvcrt.getwche() == '\r':
#Emergency function stop
test_global.emergency_stop = True
print("Emergency Stop Activated")
print("Clock Stopped")
break
以及运行进程的文件“test_global”中的示例代码:
import time as t
import datetime as dt
global emergency_stop
emergency_stop = False
def test():
while True:
print(f"No input. {dt.datetime.now()}")
if emergency_stop:
save()
print("function stopped")
break
t.sleep(1)
def save():
"""
Do some save things here
"""
pass
正如你所看到的,为了做到这一点,我尝试编辑test_global的全局变量“emergency_stop”。我曾考虑过使用管道和队列,但是在激活紧急停止之前,主进程将不断需要发送 None。队列是可能的,但随后该过程将需要不断清除它以寻找实际emergency_stop。我可以腌制一个变量并读取所说的腌制,但这似乎也过于复杂,而且有点耗时。
答: 暂无答案
评论