import multiprocessing.pool
import functools
import time
import sys
def timeout(max_timeout):
def timeout_decorator(item):
@functools.wraps(item)
def func_wrapper(*args, **kwargs):
pool = multiprocessing.pool.ThreadPool(processes=1)
async_result = pool.apply_async(item, args, kwargs)
return async_result.get(max_timeout)
return func_wrapper
return timeout_decorator
我从SE获得此代码。这会从系统级别引发超时错误。 如何处理此错误并在出现错误时执行其他操作
请注意我是python中的新手。 提前致谢
答案 0 :(得分:0)
您可以使用try / except:
包装错误try:
do_something_that_can_raise_error_X()
except X:
do_something_when_error_X_is_raised()
答案 1 :(得分:0)
您需要将可能引发此异常的代码包装在"尝试"然后除了你期望的例外情况。
from multiprocessing import TimeoutError
try:
# actions that raise TimeoutError
except TimeoutError:
# handle TimeoutError
else:
# (optional) actions for when there is no TimeoutError
finally:
# (optional) actions to perform in any case
请参阅此example in the multiprocessing docs。
请注意,在语法上允许使用除了没有列出精确异常类型的情况,但这不是一个好主意。
另外,您可能想学习如何在python中处理异常,请参阅任何python教程。