如何在X毫秒后超时python函数?

问题描述 投票:0回答:2

我在python中调用函数A(i)。如果它执行超过X毫秒,我希望它被终止。我已经看了一些超时的方法,包括signal.alarm(),但他们都花时间在整秒。我想做的事情如下:

signal.alarm(0.26) //time out after 0.26 seconds

我该怎么做呢?

python time timeout timeoutexception socket-timeout-exception
2个回答
0
投票

除了solution I linked as a possible duplicate,如果你的系统支持它,你也可以使用ctypes来使用ualarm

例如,在macOS上:

import ctypes

libc = ctypes.CDLL("libc.dylib")

libc.ualarm(10000, 0) # 10,000 microseconds

0
投票

singal.settimer需要unix。否则你可以使用time.time()

import time

start = time.time()
now = time.time()
while now - start < 0.26: # 0.26 seconds
   now = time.time()
print (now-start)

你可以使用decorator,将你的函数放在while循环中,或者在计时器结束时引发异常(可能还有其他的)。

您可能需要thread计时器。

© www.soinside.com 2019 - 2024. All rights reserved.