Like ``parallel`` but for async iterators
(
async_iterable: AsyncIterator[_T],
count: int,
callable: Callable[Concatenate[_T, _P], Deferred[Any] | None], # noqa: A002
*args: _P.args,
**named: _P.kwargs,
)
| 278 | |
| 279 | |
| 280 | def parallel_async( |
| 281 | async_iterable: AsyncIterator[_T], |
| 282 | count: int, |
| 283 | callable: Callable[Concatenate[_T, _P], Deferred[Any] | None], # noqa: A002 |
| 284 | *args: _P.args, |
| 285 | **named: _P.kwargs, |
| 286 | ) -> Deferred[list[tuple[bool, Iterator[Deferred[Any]]]]]: |
| 287 | """Like ``parallel`` but for async iterators""" |
| 288 | coop = Cooperator() |
| 289 | work: Iterator[Deferred[Any]] = _AsyncCooperatorAdapter( |
| 290 | async_iterable, callable, *args, **named |
| 291 | ) |
| 292 | dl: Deferred[list[tuple[bool, Iterator[Deferred[Any]]]]] = DeferredList( |
| 293 | [coop.coiterate(work) for _ in range(count)] |
| 294 | ) |
| 295 | return dl |
| 296 | |
| 297 | |
| 298 | def process_chain( |