1.安装模块

pip install func_timeout

2.导入模块

from func_timeout import func_set_timeout

3.使用例子

        加5秒超时:

import time
from func_timeout import func_set_timeout


@func_set_timeout(5)
def timer():
    for num in range(1,11):
        time.sleep(1)
        print(num)

timer()

        结果:

1
2
3
4
Traceback (most recent call last):
  File "C:/Users/Bek/Desktop/weston/hayaya.py", line 11, in <module>
    timer()
  File "C:\Users\Bek\Desktop\weston\venv\lib\site-packages\func_timeout\dafunc.py", line 185, in <lambda>
    return wraps(func)(lambda *args, **kwargs : func_timeout(defaultTimeout, func, args=args, kwargs=kwargs))
  File "C:\Users\Bek\Desktop\weston\venv\lib\site-packages\func_timeout\dafunc.py", line 101, in func_timeout
    raise FunctionTimedOut('', timeout, func, args, kwargs)
func_timeout.exceptions.FunctionTimedOut: Function timer (args=()) (kwargs={}) timed out after 5.000000 seconds.


Process finished with exit code 1

        加15秒超时 函数能正常跑完:

1
2
3
4
5
6
7
8
9
10

Process finished with exit code 0

4.添加捕获异常

import time
from func_timeout import func_set_timeout
import func_timeout

@func_set_timeout(5)
def timer():
    for num in range(1,11):
        time.sleep(1)
        print(num)

try:
    timer()
except func_timeout.exceptions.FunctionTimedOut as e:
    print(e)
    print("Time out!!!")

        结果:

1
2
3
4
Function timer (args=()) (kwargs={}) timed out after 5.000000 seconds.

Time out!!!

Process finished with exit code 0

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐