提供其他对象清理功能的包。

cleanupd的Python项目详细描述


cleanup模块提供有助于释放no的原语 以异常安全的方式使用更长的资源。尤其是 定义defer,当用作上下文管理器时,该函数将执行以下操作 作为注册已获取资源的清理函数的对象。 例如:

client=Client()withdefer()asd:obj=Object()d.defer(obj.destroy)obj.register(client)d.defer(obj.unregister,client)# Alternative syntax:# d.defer(lambda: obj.unregister(client))raiseException()

在这里,defer创建一个上下文对象d,它保证 在块退出时释放(即使面对异常)。它是 用于在对象之后“延迟”调用obj.destroy。 被创造出来了。这样,物体就一定会被摧毁 是的。此外,该对象已注册到客户端。这个 应该在对象消失之前取消注册 “defer”操作用于注册unregister调用。 这个例子还说明了另一个重要的事实:执行 各种清理例程的发生顺序与它们的注册顺序相反。 在大多数感兴趣资源的情况下,此属性非常重要 有依赖性。

有时只有在发生错误时才需要清理。也就是说,如果 所有操作(资源获取等)都成功,我们不希望 向后滚动并松开其中的一部分。为此,延迟上下文可以是 “释放”,在这种情况下,在块退出后不会发生清理。回访 以上示例:

client=Client()withdefer()asd:obj=Object()d.defer(obj.destroy)obj.register(client)d.defer(lambda:obj.unregister(client))# Do some action that potentially raises an error.# If we got here we want to keep the object created and registered# with the client.d.release()

这种机制不仅在上下文的层次上工作,而且在 个别延迟功能:

client=Client()withdefer()asd:obj=Object()f=d.defer(obj.destroy)# Do some action that potentially raises an error.f.release()

安装

cleanup包没有任何外部依赖项。在 为了使用它,只需要让python知道它,例如 将src/目录的路径添加到PYTHONPATH 环境变量。

如果使用Gentoo Linux,则 ebuild可用 可直接使用。

支架

该模块用python 3进行了测试。没有工作要确保 与Python2兼容。

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

推荐PyPI第三方库


热门话题
java从XML文本中提取数据   使用JAVA在“Bixolon热敏打印机”上打印,“未找到页面!”错误   Java8流:每个流   java如何使用JRootPane修改JFrame?   如何在java中获取出错的行号?   为什么JavaCompiler在实例化Java类时速度很慢?   Java Swing计时器类中可能存在的错误   从抽象类返回Java上的泛型对象   java流式传输来自JAXRS响应的pdf文件:url的“401:Unauthorized”   java呈现线性布局似乎很慢   如何使用java将具有重叠的多个分割图像合并回原始图像?   java使用DatagramPacket从一个客户端向另一个客户端发送数据   linux如何使用java代码中运行的Service statusall | grep获取结果我的代码没有给出结果?   使用Java ZipFile类解压缩ZIP文件   java Elasticsearch集成测试和springtest不能很好地协同工作AccessControlException   一种增强java集合的区间树生成算法   在JDK之外使用附加API的兼容性