![](/img/trans.png)
[英]How do I pass in a list of arguments to subprocess.run?(python)
[英]How can I avoid Python hanging on subprocess.run()
我正在創建一個小的自動化腳本來與游戲進行交互。 游戲很容易崩潰,但以不可預測的方式(30 分鍾到 3 小時后,取決於游戲中發生的情況)。 正因為如此,我在下面寫了一個小腳本,它是理想的終止程序,終止檢查崩潰並提供重新啟動的崩潰監控客戶端,然后重新啟動游戲並繼續。 問題是我從來沒有達到過 subprocess.run()
它再次啟動游戲,但不允許在此之后運行任何代碼。
import psutil
import time
import subprocess
def main():
'''Process kill function'''
for proc in psutil.process_iter():
# check whether the process name matches
# print(proc.name())
if any(procstr in proc.name() for procstr in\
['GameName.exe']):
print(f'Killing {proc.name()}')
proc.kill()
time.sleep(5)
for proc in psutil.process_iter():
# check whether the process name matches
# print(proc.name())
if any(procstr in proc.name() for procstr in\
['GameCrashMonitor.exe']):
print(f'Killing {proc.name()}')
proc.kill()
time.sleep(10)
subprocess.run(r'PathToGame.exe')
print(time.time())
if __name__ == "__main__":
main()
這個程序成功進入subprocess.call,再次啟動游戲,然后python就掛了。 我無法控制 ipython 上的 c 來阻止它。 我使用 Spyder,它甚至使我的任務欄上的 spyder 圖標出錯並消失。
嘗試更換subprocess.run()
與variable = subprocess.Popen([r'PathToGame.exe'])
https://docs.python.org/3/library/subprocess.html說subprocess.run()等待命令完成,然后返回一個 CompletedProcess 實例。 你的命令沒有完成。 此外,您可以將超時參數傳遞給 run() 但默認情況下,它是None
,並且不會超時,如果您仍想使用.run()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.