说我的代码类似于:
from multiprocessing import Process
def pro_a():
#execute some code that runs a radio program
def pro_b():
#execute some code that keeps a GUI running
.
.
. #some code
if __name__ == '__main__':
Process(target=pro_a).start()
Process(target=pro_b).start()
如何在这些流程启动后结束这些流程?我已经尝试过.end(),.quit(),。telminate(),每次命令窗口都会显示' Process'对象没有属性' ...' (Linux)的
在我的特定代码中,我在某个中心频率运行GNU无线电,然后我希望我的GUI能够有一个按钮,当按下时,更新中心频率,然后关闭进程并重新启动运行它们以便使用新的中心频率。
答案 0 :(得分:1)
评论:我需要从另一个进程
终止它
您可以使用os.kill(...
执行此操作。
os.kill(pid,sig)
将信号sig发送到进程pid。主机平台上可用的特定信号的常数在信号模块中定义。
例如:
os.kill(p.pid, signal.SIGTERM)
注意:在文档中注意
kill
process
的警告。
Python»3.6.1文档multiprocessing.Process.terminate
如果您以这种方式使用它,则会从.start()
获得None
的返回值:
if __name__ == '__main__':
p =Process(target=pro_a).start()
你必须这样做:
if __name__ == '__main__':
p= Process(target=pro_a)
p.start()
time.sleep(5)
p.terminate()