Terminate a python script from another python script

前端 未结 2 1327
我寻月下人不归
我寻月下人不归 2020-11-29 11:22

I\'ve got a long running python script that I want to be able to end from another python script. Ideally what I\'m looking for is some way of setting a process ID to the fi

相关标签:
2条回答
  • 2020-11-29 11:47

    You could get your own PID (Process Identifier) through

    import os
    os.getpid()
    

    and to kill a process in Unix

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

    to kill in Windows use

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

    You can send the PID to the other programm or you could search in the process-list to find the name of the other script and kill it with the above script.

    I hope that helps you.

    0 讨论(0)
  • 2020-11-29 11:56

    You're looking for the 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 starts the external python script, equivalent to typing 'python myPyScript.py' in a console or terminal.

    The status from subprocess.Popen.poll(extProc) will be 'None' if the process is still running, and (for me) 1 if it has been closed from within this script. Not sure about what the status is if it has been closed another way.

    0 讨论(0)
提交回复
热议问题