【问题标题】:Terminate a python script from another python script从另一个 python 脚本终止一个 python 脚本
【发布时间】:2011-03-04 12:59:42
【问题描述】:

我有一个长时间运行的 python 脚本,我希望能够从另一个 python 脚本结束。理想情况下,我正在寻找某种将进程 ID 设置为第一个脚本并能够通过第二个脚本的 ID 查看它是否正在运行的方法。此外,我希望能够终止那个长期运行的进程。

有什么很酷的捷径可以做到这一点吗?

另外,我在 Windows 环境中工作。

我最近在这里找到了另一个答案:Check to see if python script is running

【问题讨论】:

    标签: python process terminate


    【解决方案1】:

    您可以通过

    获得自己的PID(进程标识符)
    import os
    os.getpid()
    

    在 Unix 中杀死一个进程

    import os, signal
    os.kill(5383, signal.SIGKILL)
    

    在 Windows 中杀死使用

    import subprocess as s
    def killProcess(pid):
        s.Popen('taskkill /F /PID {0}'.format(pid), shell=True)
    

    您可以将 PID 发送给其他程序,或者您可以在进程列表中搜索以找到其他脚本的名称并使用上述脚本将其终止。

    希望对你有帮助。

    【讨论】:

    【解决方案2】:

    您正在寻找subprocess module

    import subprocess as sp
    
    extProc = sp.Popen(['python','myPyScript.py']) # runs myPyScript.py 
    
    status = sp.Popen.poll(extProc) # status should be 'None'
    
    sp.Popen.terminate(extProc) # closes the process
    
    status = sp.Popen.poll(extProc) # status should now be something other than 'None' ('1' in my testing)
    

    subprocess.Popen 启动外部 python 脚本,相当于在控制台或终端中输入“python myPyScript.py”。

    如果进程仍在运行,则 subprocess.Popen.poll(extProc) 的状态将为“无”,如果已从该脚本中关闭,则(对我而言)为 1。如果以其他方式关闭,则不确定状态是什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-03
      • 1970-01-01
      • 1970-01-01
      • 2014-09-26
      • 1970-01-01
      • 2011-11-23
      • 2017-03-30
      • 1970-01-01
      相关资源
      最近更新 更多