在有限的时间内运行外部python程序

时间:2013-05-17 19:32:32

标签: python

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

我该怎么做?

我正在使用命令os.system("./test.py")

运行外部程序

3 个答案:

答案 0 :(得分:2)

您需要比os.system允许的更多控制您的子进程。 subprocess,尤其是PopenPopen objects为您提供了足够的控制权来管理子流程。对于计时器,请再次查看section in the standard library

答案 1 :(得分:2)

查看psutil module。它提供了一个跨平台的界面来检索所有正在运行的进程的信息,并允许您同时终止进程。 (它可以做得更多,但这就是你应该需要的!)

以下是您如何使用它的基本概念:

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()

答案 2 :(得分:1)

#!/usr/bin/env python
import time, os, subprocess
process = subprocess.Popen(
    ['yes'], stdout=open(os.devnull,'w'))
time.sleep(60)
process.terminate()