基于生成器的异步迭代操作符
项目描述
基于生成器的异步迭代操作符
摘要
aiostream 提供了一组流操作符,可以组合起来创建异步操作流水线。
它可以被看作是 itertools 的异步版本,尽管某些方面略有不同。本质上,所有提供的操作符都返回一个统一的接口,称为流。流是一个增强的异步可迭代对象,提供以下功能
操作符管道化 - 使用管道符号 |
可重复性 - 每次迭代创建一个不同的迭代器
安全迭代上下文 - 使用 async with 和 stream 方法
简化执行 - 使用 await 从流中获取最后一个元素
切片和索引 - 使用方括号 []
连接 - 使用加号 +
流操作符
流操作符 分为7个类别
创建 |
iterate、preserve、just、call、empty、throw、never、repeat、count、range |
转换 |
|
选择 |
take、takelast、skip、skiplast、getitem、filter、until、takewhile、dropwhile |
组合 |
|
聚合 |
|
高级 |
|
计时 |
|
杂项 |
演示
以下示例演示了大多数流的功能
import asyncio
from aiostream import stream, pipe
async def main():
# Create a counting stream with a 0.2 seconds interval
xs = stream.count(interval=0.2)
# Operators can be piped using '|'
ys = xs | pipe.map(lambda x: x**2)
# Streams can be sliced
zs = ys[1:10:2]
# Use a stream context for proper resource management
async with zs.stream() as streamer:
# Asynchronous iteration
async for z in streamer:
# Print 1, 9, 25, 49 and 81
print('->', z)
# Streams can be awaited and return the last value
print('9² = ', await zs)
# Streams can run several times
print('9² = ', await zs)
# Streams can be concatenated
one_two_three = stream.just(1) + stream.range(2, 4)
# Print [1, 2, 3]
print(await stream.list(one_two_three))
# Run main coroutine
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
loop.close()
更多示例请参阅文档的示例部分。
安装
您可以从PyPI作为aiostream软件包安装aiostream。
联系
Vincent Michel: vxgmichel@gmail.com
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
aiostream-0.6.2.tar.gz (67.8 kB 查看哈希值)
构建分布
aiostream-0.6.2-py3-none-any.whl (53.8 kB 查看哈希值)