围绕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)
初始版本。