异步 `zip` 类似聚合器,用于 `async for`
项目描述
AsyncZip 是一个类似于 zip 的简单函数,用于异步可迭代对象。它在许多方面都类似于 asyncio.wait。
用法
给定 n 个异步可迭代对象,AsyncZip(*aiterables) 会返回一个新的异步可迭代对象,遍历所有这些对象。类似于 asyncio.wait,可以使用选项 FIRST_COMPLETED 等待任何可迭代对象产生值,或者使用选项 ALL_COMPLETED 等待所有可迭代对象。
class AsyncZip
def __init__(self, *asynchronous_iterables, loop=None, yield_when=FIRST_COMPLETED):- asynchronous_iterables: 一组异步可迭代对象 
- loop: 可选命名参数,用于指定特定的事件循环 
- yield_when: 类似于 asyncio.wait 中的 return_when,可以是 FIRST_COMPLETED 或 ALL_COMPLETED。 
FIRST_COMPLETED, ALL_COMPLETED
yield_when 可以取的两个值,FIRST_COMPLETED 和 ALL_COMPLETED,告诉 AsyncZip 应该何时产生值。默认为 FIRST_COMPLETED。
- FIRST_COMPLETED 
类似于 select,当 AsyncZip 在尽可能快的时间内产生每个可迭代对象的值时,它会产生。
- ALL_COMPLETED 
这是经典的 zip 模式,其中 AsyncZip 在产生所有值之前,会等待每个迭代器的值。
示例用法
import asyncio
from asynczip import AsyncZip
class DummyAsyncIterable:
    def __init__(self, items):
        self.items = items
    async def __aiter__(self):
        return self
    async def __anext__(self):
        try:
            return self.items.pop(0)
        except IndexError:
            raise StopAsyncIteration
async def test():
    async for items in AsyncZip(DummyAsyncIterable(list("foo")),
                                DummyAsyncIterable(list("bar"))):
        print(items)
asyncio.get_event_loop().run_until_complete(test())给出
[<Task finished coro=<DummyAsyncIterable.__anext__() done, defined at test.py:11> result='f'>,<Task finished coro=<DummyAsyncIterable.__anext__() done, defined at test.py:11> result='b'>]
[<Task finished coro=<DummyAsyncIterable.__anext__() done, defined at test.py:11> result='o'>, <Task finished coro=<DummyAsyncIterable.__anext__() done, defined at test.py:11> result='a'>]
[<Task finished coro=<DummyAsyncIterable.__anext__() done, defined at test.py:11> result='o'>, <Task finished coro=<DummyAsyncIterable.__anext__() done, defined at test.py:11> result='r'>]项目详情
    
       关闭
    
      
        
    
    
  
asynczip-1.0.7.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | eea2b2375256dce6da2457d79212deb1c7861146238853be6c5c15aa5be8ebfc | |
| MD5 | 070863ec67dcebb4851ef5cf515e2665 | |
| BLAKE2b-256 | 867f47f404eae0286669a02bd929c220bca6fadf63d38672c935075885b2026a |