任意python函数的超时。

pto的Python项目详细描述


python的简单超时

Status Image

pto是麻省理工学院授权的图书馆,可以方便地对 不公开功能本身的函数的运行时。 我的灵感来自于一个需要阻止计划的工作也运行的需要 在我按小时付款的站台上。也许你只是需要 结束一个不稳定的网络呼叫。不管怎样,都很简单:

>>> from pto import timeout
>>> @timeout(5)
... def slow_func():
...     while True:
...         pass
...
>>> slow_func()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 2, in slow_func
  File "pto/__init__.py", line 97, in _timeout
    result = f(*args, **kwargs)
  File "<stdin>", line 3, in slow_func
  File "pto/__init__.py", line 89, in handle_timeout
    raise TimedOutException
pto.TimedOutException: u'Timed Out'

灵感

我是受Chris Wright’s recipe的启发才这么做的。我喜欢 食谱,但我厌倦了复制和粘贴,我不喜欢 装饰器没有保留签名、docstring等。

注意事项

这只适用于类unix平台。抱歉,Windows用户。我很乐意 为了支持windows,但是秘密的sauce(signal.alarm来自std lib)在windows上不起作用。

这并不是设计用来处理线程的,因为只有 主线程将用python接收信号。不管怎样,如果你用 线程,您可能有其他方法来处理超时。

如果要在静态方法或类方法上设置超时,则需要 首先在方法上设置超时,然后装饰包装的 使用@staticmethod@classmethod的方法。有一些例子 test_pto.py

我很确定lib在python 2.4中可以工作,但是我没有 安装在周围测试。如果有人想自愿核实 Lib 2.4,请联系我。

安装

要安装动力输出轴,只需:

$ pip install pto

或者,如果您必须这样做:

$ easy_install pto

但是,你真的不应该这么做。

历史记录

0.0.7(2013-03-14)

  • 增强忽略
  • 启用setup.py测试
  • 为Python3与Python2自定义依赖关系
  • 将Travis CI状态图像添加到readme.rst

0.0.6(2013-03-13)

  • 添加单元测试
  • 启用Travis CI
  • 在readme.rst中添加更多的注意事项/gotchas
  • 更新示例用法
  • 更新trove分类器

0.0.5(2013-03-13)

  • 在manifest.in中包含许可证的正确路径

0.0.4(2013-03-13)

  • 在PYPI页面上嵌入许可证。

0.0.3(2013-03-13)

  • pip可以实际安装的第一个版本。

0.0.2(2013-03-12)

  • 初稿

0.0.1(2013-03-11)

  • 概念

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

推荐PyPI第三方库


热门话题
java如何从ImageIO中排除特定的TIFF读取器?   JavaJMockit和passbyreference。我们中一定有一个人错了(可能是我!)   java Android camera2放弃了牛轧糖的表面,但在棉花糖上工作   java按字符串中出现的顺序对字符数组进行排序   如何获取Groovy生成的java源代码   java无法使用AutoIT和Selenium Webdriver在所需位置/文件夹保存图像   java为什么我的冒泡排序代码会打印出这些奇怪的东西?   java JAXB:typesafeEnumMemberName=“generateName”是否可自定义?   Java编程输入:今天是星期天输出:星期天是今天   java不理解首个OOAD书的吉他示例   java如何从JformattedTextfield检索货币格式值   java可以从相同的源代码生成功能不同的可执行文件吗?