多线程 – 关闭/终止对象的Pythonic方式
发布时间:2020-12-15 04:55:24 所属栏目:Java 来源:网络整理
导读:我有一个Whoosh(文件索引器)编写器对象 awhoosh.filedb.filewriting.SegmentWriter object at 0x013DFE10 由于whoosh不允许多个编写者并实现线程安全(AFAIK !!),我想在使用它时关闭该对象. a.is_closedFalse 但它没有密切的方法.我确信所有成熟的python库对
我有一个Whoosh(文件索引器)编写器对象
>>> a <whoosh.filedb.filewriting.SegmentWriter object at 0x013DFE10> 由于whoosh不允许多个编写者并实现线程安全(AFAIK !!),我想在使用它时关闭该对象. >>> a.is_closed False 但它没有密切的方法.我确信所有成熟的python库对象都有内部函数,例如__ exit__,它们允许所有基本功能.关闭Python对象的正确方法是什么?或者它取决于图书馆本身?我以它的字面形式采用Python的“单一但显而易见的正确方法”方式 这是dir(a)的粘贴:http://pastebin.com/Q5hceTr8 后记 我刚刚在Confused about Python’s with statement询问前一天才刚刚了解了with声明.这个问题很明显,因为我需要一种处理全局对象的方法;这样我可以在多次添加或删除后进行提交.好像whoosh有一个searcher.close()而不是一个indexer.close(),这似乎不一致 解决方法
如果它有__enter__和__exit__方法,那意味着它实现了
context manager protocol,你应该像这样使用它:
with constructor(args) as a: # do stuff with a pass # here a is closed even if you had an error above 构造函数是类本身或用于创建它的任何工厂函数.在Python 2.5中,您需要从__future__导入with_statement. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |