围绕Python生成器和上下文管理器的糖
项目描述
此软件包提供了一个辅助工具,帮助使用Python生成器编写协函数。它提供了一个装饰器,允许您编写以下模式
from infrae.comethod import cofunction @cofunction def processor(**options): # Init code content = yield while content is not None: # Work on content, set result in result. content = yield result # Cleanup code
如果您创建了更多的这些协函数,您可以嵌套它们
import logging @cofunction def logger(parent **options): logger = logging.getLogger(options.get('name', 'default')) logger.info('Start') content = yield while content is not None: result = parent(content) logger.info('Processed {0}, got {1}'.format(content, result)) content = yield result # Cleanup code logger.info('Done')
您可以使用它这样
with processor() as process: with logger(process) as log: for item in generator(): log(item)
或者
with processor() as process: with logger(process) as log: log.map(generator)
其中生成器是一个生成器,它会生成要工作的值。当然,您可以在之后做更多有趣的事情。
您可以在以下位置找到Mercurial代码存储库: https://hg.infrae.com/infrae.comethods/
变更
1.0 (2011/11/07)
初始版本。