![](/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.