簡體   English   中英

從另一個 python 腳本終止 python 腳本

[英]Terminate a python script from another python script

我有一個長時間運行的 python 腳本,我希望能夠從另一個 python 腳本結束。 理想情況下,我正在尋找某種將進程 ID 設置為第一個腳本並能夠通過第二個腳本的 ID 查看它是否正在運行的方法。 此外,我希望能夠終止那個長時間運行的進程。

有什么很酷的捷徑可以做到這一點嗎?

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

我最近在這里找到了一個替代答案: 檢查 python 腳本是否正在運行

您可以通過以下方式獲得自己的 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 發送到其他程序,也可以在進程列表中搜索以查找其他腳本的名稱並使用上述腳本將其殺死。

我希望這對你有幫助。

您正在尋找subprocess 模塊

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。 如果它以其他方式關閉,不確定它的狀態。

這在 windows 11 和 PyQt5 下對我有用: subprocess.Popen('python3 MySecondApp.py') Popen.terminate(app)

其中 app 是 MyFirstApp.py(調用者腳本,正在運行)和 MySecondApp.py(被調用腳本)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM