1、func_timeout 模块
https://github.com/kata198/func_timeout
作者已经在 python 2.7、3.4、3.5、3.6 和 3.7 中测试了 func_timeout。它也可以用于其他版本。
支持:windows, linux/unix, cygwin, mac。
pip install func_timeout
1.1 示例
示例1:不超时
import time
from func_timeout import func_set_timeout
import func_timeout
@func_set_timeout(2) # 设置函数执行的超时时间_秒
def testFunc():
print('------------start')
time.sleep(1)
print('------------end')
if __name__ == '__main__':
try:
testFunc()
except func_timeout.exceptions.FunctionTimedOut as e:
print(e)
print('------超时')
输出:
------------start
------------end
示例2:超时
import time
from func_timeout import func_set_timeout
import func_timeout
@func_set_timeout(2) # 设置函数执行的超时时间_秒
def testFunc():
print('------------start')
time.sleep(3)
print('------------end')
if __name__ == '__main__':
try:
testFunc()
except func_timeout.exceptions.FunctionTimedOut as e:
print(e)
print('------超时')
输出:
------------start
Function testFunc (args=()) (kwargs={}) timed out after 2.000000 seconds.
------超时
1.2 超时装饰器参数
def func_timeout(timeout, func, args=(), kwargs=None):
'''
@param timeout <float> - 超时时间,单位秒。
@param func <function> - 回调函数。
@param args <tuple> - 传递给函数的任何有序参数。
@param kwargs <dict/None> - 传递给函数的关键字参数。
@return - The return value that #func# gives
'''