1

我有一个 python 脚本,它运行另一个 python 程序,然后从日志中收集结果。唯一的问题是我希望它运行有限的秒数。所以我想在说 1 分钟后终止进程。

我怎样才能做到这一点?

我正在使用命令运行外部程序os.system("./test.py")

4

3 回答 3

2

您需要对您的子进程进行更多控制os.systemsubprocess,尤其是PopenPopen 对象为您提供了足够的控制来管理子进程。对于计时器,再次参见标准库中的部分

于 2013-05-17T19:47:29.683 回答
2

检查psutil模块。它提供了一个跨平台接口来检索所有正在运行的进程的信息,并允许你杀死进程。(它可以做得更多,但这就是你所需要的!)

以下是如何使用它的基本思想:

import os
import psutil
import time


os.system('./test.py')
# Find the PID for './test.py'. 
# psutil has helper methods to make finding the PID easy.
pid = <process id of ./test.py>  

time.sleep(60)
p = psutil.Process(pid)
p.kill()
于 2013-05-17T19:47:46.897 回答
1
#!/usr/bin/env python
import time, os, subprocess
process = subprocess.Popen(
    ['yes'], stdout=open(os.devnull,'w'))
time.sleep(60)
process.terminate()
于 2013-05-17T19:57:29.163 回答