任意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第三方库


热门话题
javajaxb在嵌套节点中生成xmlns:xsi声明   java重定向到youtube以上传jsp上可用的视频   java提高了JVM和ANT的性能   java如何将返回的JSON数据放在HTML表单中   java如何发送XWWWFORMURLENCODE在重新授权   java为什么jvm XX:+EliminateAllocations失败   堆移除和重建方法?(爪哇)   Stanford NPL in Spark(Scala)应用程序运行到Java堆空间(Java.lang.OutOfMemoryError)   调试java中打开/关闭println的任何方式(详细模式)   java IntelliJ在鼠标悬停时显示JavaDocs工具提示   Olingo Odata Java中的自动扩展选项   json将postgres文本arry转换为java列表?   oop需要帮助推断Java代码   复选框的java添加操作侦听器AbstractTableModel   java如何从公共静态void main(String[]args)传递值   java从数据库中获取大值   java Processing 2.0电影从jar运行时无法打开电影文件   java如何在不使用应用程序的情况下刷新活动?   尝试将JSON解析为ListView时的Android:JSON parse:null对象引用