超时装饰器
timeout-decorator的Python项目详细描述
超时装饰器
安装
源代码:
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,否则它将无法在主进程和子进程之间编组它。
确认
来源于 http://www.saltycrane.com/blog/2010/04/using-python-timeout-decorator-uploading-s3/ 以及https://code.google.com/p/verse-quiz/source/browse/trunk/timeout.py
贡献
我希望你能给我这个项目的请求。 请捐款。
更改日志
0.3.1
- 修复了picklingerror导致无法达到超时的问题。
0.3.0
- 通过python多处理(bubenkoff)添加了可选的线程支持
- 切换到pytest测试运行程序(bubenkoff)
0.2.1
- 首次公开发行