超时装饰器

timeout-decorator的Python项目详细描述


超时装饰器

Build StatusPypi StatusCoveralls Status

安装

源代码:

python setup.py install

来自PYPI:

pip install timeout-decorator

使用量

import time
import timeout_decorator

@timeout_decorator.timeout(5)
def mytest():
    print("Start")
    for i in range(1,10):
        time.sleep(1)
        print("{} seconds have passed".format(i))

if __name__ == '__main__':
    mytest()

指定在超时时引发的备用异常:

import time
import timeout_decorator

@timeout_decorator.timeout(5, timeout_exception=StopIteration)
def mytest():
    print("Start")
    for i in range(1,10):
        time.sleep(1)
        print("{} seconds have passed".format(i))

if __name__ == '__main__':
    mytest()

多线程

默认情况下,timeout decorator使用信号来限制执行时间 给定函数的。如果您的功能是 不在主线程中执行(例如,如果它是 Web应用程序)。有另一种超时策略 案例-使用多处理。使用它,只要通过 use_signals=False到超时装饰函数:

import time
import timeout_decorator

@timeout_decorator.timeout(5, use_signals=False)
def mytest():
    print "Start"
    for i in range(1,10):
        time.sleep(1)
        print("{} seconds have passed".format(i))

if __name__ == '__main__':
    mytest()

警告

确保在超时的多处理策略情况下,函数不返回不能返回的对象 被pickle,否则它将无法在主进程和子进程之间编组它。

贡献

我希望你能给我这个项目的请求。 请捐款。

许可证

本软件在MIT license

License file

更改日志

0.3.1

  • 修复了picklingerror导致无法达到超时的问题。

0.3.0

  • 通过python多处理(bubenkoff)添加了可选的线程支持
  • 切换到pytest测试运行程序(bubenkoff)

0.2.1

  • 首次公开发行

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java InputStream对象在声明后关闭   java未定义名为“transactionManager”的bean重命名transactionManager   java“jar”命令何时会拒绝将类添加到java中。jar文件?   java JPA标准依赖WHERE子句   安卓中从SD卡读取文本文件时出现java错误   java直接启用类似位置的权限   使用@WebMvcTest和Mockito-BDDMockito对SpringBoot-RestController进行java测试   java JSESSIONID存储在哪里?   java jtextarea鼠标事件覆盖容器鼠标事件   java DRL无法解析动态加载的类   java是从一个方法返回多个对象的最简单方法   java自定义按钮/编辑框是否不可见?   java GUI如何在保存用户输入的同时在面板或框架之间切换   swing Java自定义JSlider不会更新   GridBagLayout中的java超过1个JPanel   java从ProjectReactor中的flux中采样除第一个元素外的所有元素   Java泛型和泛型类型   Java代码生成宽指令的jvm