我的代码中有一个与套接字相关的函数调用,该函数来自另一个模块,因此不受我的控制,问题是它偶尔会阻塞几个小时,这是完全 Not Acceptable ,我该如何限制函数执行时间我的代码?我想解决方案必须使用另一个线程。
最佳答案
@rik.the.vik 的答案的改进是使用 with
statement给超时函数一些语法糖:
import signal
from contextlib import contextmanager
class TimeoutException(Exception): pass
@contextmanager
def time_limit(seconds):
def signal_handler(signum, frame):
raise TimeoutException("Timed out!")
signal.signal(signal.SIGALRM, signal_handler)
signal.alarm(seconds)
try:
yield
finally:
signal.alarm(0)
try:
with time_limit(10):
long_function_call()
except TimeoutException as e:
print("Timed out!")
关于python - 如何限制函数调用的执行时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/366682/