【问题标题】:Timeout of an binary file with python使用python的二进制文件超时
【发布时间】:2015-11-16 03:41:11
【问题描述】:

您好,我是 python 语言的新手,我想知道如何在二进制文件达到超时时停止执行,例如代码无法按我的意愿工作

import os
time = os.system("./test")
if (time > 10):
    print ("timeout")
else:
    #do other stuff

test.c 内部

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    while(1)
       printf("Hello World!");
    return 0;
}

在这个例子中,我想运行 test.c 生成的二进制文件,并在我运行二进制文件后的时间达到 10 秒时停止执行测试。

【问题讨论】:

    标签: python linux python-2.7


    【解决方案1】:

    使用subprocess.Popen.poll:

    proc = subprocess.Popen(['./test'])
    t = time.time()
    while time.time() -t < 1:
        if proc.poll() is not None:
            # Do other stuff
            break
    else:
        print 'timeout'
        proc.terminate()
        proc.wait()
    

    如果你可以 Python 3.3+,subprocess.Popen.wait 支持timeout

    import subprocess
    
    proc = subprocess.Popen(['./test'])
    try:
        proc.wait(timeout=10)
    except subprocess.TimeoutExpired:
        print('timeout')
        proc.terminate()
        proc.wait()
    else:
        # Do something else.
    

    【讨论】:

      猜你喜欢
      • 2013-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-01
      • 1970-01-01
      相关资源
      最近更新 更多