如何解决如果时间太长,则中断 python 中的 shell 进程
我正在 python
中编写脚本。
我需要写入磁盘,并运行一些 shell 脚本。
但是,根据输入,这些可能需要很长时间,如果它们花费的时间太长,我想杀死它们。
我想要类似的东西:
def run_once(input_text):
with open("temp.file","w") as f:
f.write(input_text)
os.system("./synthesize.sh temp.tsl")
for single in many:
if(takes_more_than_60_seconds(run_once(input_text)):
kill(process)
print("Process killed since it took too long. Moving to the next job.")
解决方法
不要使用 os.system
,而是尝试使用 subprocess.run
并使用 timeout
选项:
# file: sleepy.py
import time
time.sleep(10)
# file: monitor.py
import subprocess
import shlex
try:
subprocess.run(shlex.split("python sleepy.py"),timeout=5)
except subprocess.TimeoutExpired:
print("Timed out")
当您运行 python monitor.py
时,它会阻塞直到达到超时。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。