繁体   English   中英

Python-如何杀死一个进程(不是子进程)

[英]Python - How can a process be killed (not subprocess)

说我有类似的代码:

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()、. terminate(),每次命令窗口都说'Process'对象没有属性'...'(Linux)

在我的特定代码中,我正在以某个中心频率运行GNU无线电,然后希望我的GUI能够有一个按钮,当按下该按钮时,更新中心频率,然后关闭进程并重新运行它们,以便使用新的中心频率。

评论 :我需要从另一个进程中终止它。

您可以使用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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM