我在python中调用函数A(i)
。如果它执行超过X毫秒,我希望它被终止。我已经看了一些超时的方法,包括signal.alarm()
,但他们都花时间在整秒。我想做的事情如下:
signal.alarm(0.26) //time out after 0.26 seconds
我该怎么做呢?
除了solution I linked as a possible duplicate,如果你的系统支持它,你也可以使用ctypes
来使用ualarm
。
例如,在macOS上:
import ctypes
libc = ctypes.CDLL("libc.dylib")
libc.ualarm(10000, 0) # 10,000 microseconds
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计时器。