在python中中断shell进程,如果它是';It’时间太长了

在python中中断shell进程,如果它是';It’时间太长了,python,shell,scripting,Python,Shell,Scripting,我正在用python编写脚本。 我需要写入磁盘,并运行一些shell脚本。 但是,根据输入的不同,这些可能需要很长时间,如果需要太长时间,我想杀死它们。 我想要像这样的东西: def运行一次(输入文本): 打开(“临时文件”,“w”)作为f: f、 写入(输入文本) 操作系统(“./synthesis.sh temp.tsl”) 对于单件多件: 如果(需要超过60秒(运行一次(输入文本)): 杀死(过程) 打印(“进程已终止,因为它花费的时间太长。正在移动到下一个作业。”) 不要使用os.sys

我正在用python编写脚本。 我需要写入磁盘,并运行一些shell脚本。 但是,根据输入的不同,这些可能需要很长时间,如果需要太长时间,我想杀死它们。 我想要像这样的东西:

def运行一次(输入文本):
打开(“临时文件”,“w”)作为f:
f、 写入(输入文本)
操作系统(“./synthesis.sh temp.tsl”)
对于单件多件:
如果(需要超过60秒(运行一次(输入文本)):
杀死(过程)
打印(“进程已终止,因为它花费的时间太长。正在移动到下一个作业。”)

不要使用
os.system
,请尝试
子流程。运行
并使用
超时
选项:

#文件:sleepy.py
导入时间
时间。睡眠(10)
#文件:monitor.py
导入子流程
导入shlex
尝试:
subprocess.run(shlex.split(“python sleepy.py”),超时=5)
除subprocess.TimeoutExpired外:
打印(“超时”)

运行
python monitor.py
时,它会一直阻塞,直到达到超时时间。

此线程有一个非常好的示例: