【问题标题】:Interrupt shell process in python if it's taking too long如果花费太长时间,则在 python 中中断 shell 进程
【发布时间】:2021-05-01 16:57:07
【问题描述】:

我在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.")

【问题讨论】:

标签: python shell scripting


【解决方案1】:

不要使用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 时,它会一直阻塞直到超时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-03
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    相关资源
    最近更新 更多