跳转到主要内容

围绕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)

  • 初始版本。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解更多关于安装软件包的信息。

源分布

infrae.comethods-1.0.tar.gz (2.7 kB 查看哈希值)

上传于

由以下支持