【问题标题】:Run external python program for a limited amount of time在有限的时间内运行外部 python 程序
【发布时间】:2013-05-17 19:32:32
【问题描述】:

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

我该怎么做?

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

【问题讨论】:

标签: python


【解决方案1】:

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

【讨论】:

    【解决方案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()
    

    【讨论】:

      【解决方案3】:
      #!/usr/bin/env python
      import time, os, subprocess
      process = subprocess.Popen(
          ['yes'], stdout=open(os.devnull,'w'))
      time.sleep(60)
      process.terminate()
      

      【讨论】:

        猜你喜欢
        • 2012-03-06
        • 2011-02-28
        • 2020-04-15
        • 1970-01-01
        • 2016-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多