相关疑难解决方法(0)

函数调用超时

我正在调用Python中的一个函数,我知道它可能会停止并迫使我重新启动脚本.

如何调用该函数或我将其包装成什么,以便如果它花费的时间超过5秒,脚本会取消它并执行其他操作?

python multithreading timeout python-multithreading

259
推荐指数
14
解决办法
27万
查看次数

超时时终止或终止子进程?

我想尽快重复执行一个子进程.但是,有时这个过程需要很长时间,所以我想杀掉它.我使用signal.signal(...)如下所示:

ppid=pipeexe.pid
signal.signal(signal.SIGALRM, stop_handler)

signal.alarm(1)
.....
def stop_handler(signal, frame):
    print 'Stop test'+testdir+'for time out'
    if(pipeexe.poll()==None and hasattr(signal, "SIGKILL")):
         os.kill(ppid, signal.SIGKILL)
         return False
Run Code Online (Sandbox Code Playgroud)

但有时这段代码会试图阻止下一轮执行.停止测试/ home/lu/workspace/152/treefit/test2for time out/bin/sh:/ home/lu/workspace/153/squib_driver:not found ---这是下一次执行; 该程序错误地阻止它.

有谁知道如何解决这个问题?我想及时停止不执行1秒钟.sleep(n)经常等待n秒.我不希望我希望它可以执行不到1秒

python subprocess signals timeout kill

17
推荐指数
1
解决办法
3万
查看次数

即使指定了超时,subprocess.run 也不会超时

我有以下 Python 代码:

strRunOutput = subprocess.run([strFastbootExecutable, "-s", dsn.upper(), "reboot"], timeout=5, stderr=subprocess.PIPE).stderr.decode('utf-8').upper()
Run Code Online (Sandbox Code Playgroud)

这基本上是这样做的:

fastboot -s G070GV1871970FCW reboot
Run Code Online (Sandbox Code Playgroud)

这是输出:

< waiting for G070GV1871970FCW >
Run Code Online (Sandbox Code Playgroud)

...这是挂。为什么 fastboot 命令挂起,我不知道,但更让我烦恼的是 subprocess.run 命令在我告诉它的 5 秒后没有超时,并导致我的程序挂起。任何想法发生了什么?

谢谢!

python-3.x

6
推荐指数
1
解决办法
1718
查看次数