Source code for aiter.preload_aiter
from .gated_aiter import gated_aiter
[docs]async def preload_aiter(preload_size, aiter):
"""
This aiter wraps around another aiter, and forces a preloaded
buffer of the given size. When an element is removed, the loader is
given a kick to try to refill the preload buffer.
:type preload_size: int
:param preload_size: the maximum number of items to attempt to preload
:type aiter: async iterator
:param aiter: an aiter
:return: an async iterator yielding the same values as the original aiter
:rtype: async iterator
"""
gate = gated_aiter(aiter)
gate.push(preload_size)
async for _ in gate:
yield _
gate.push(1)
gate.stop()