Cannot step through asynchronous iterator manually

Chris Angelico rosuav at gmail.com
Sat Jan 30 03:09:26 EST 2016


On Sat, Jan 30, 2016 at 7:02 PM, Ian Kelly <ian.g.kelly at gmail.com> wrote:
> On Jan 29, 2016 11:04 PM, "Frank Millman" <frank at chagford.com> wrote:
>>
>> Hi all
>>
>> To loop though an iterator one usually uses a higher-level construct such
> as a 'for' loop. However, if you want to step through it manually you can
> do so with next(iter).
>>
>> I expected the same functionality with the new 'asynchronous iterator' in
> Python 3.5, but I cannot find it.
>>
>> I can achieve the desired result by calling 'await aiter.__anext__()',
> but this is clunky.
>>
>> Am I missing something?
>
> async for x in aiter:
>     pass

Yeah, he wants to single-step it. A regular for loop is equivalent to
calling next() lots of times, and you can manually call next(). Common
usage: Skip a header row before iterating over the rest of a file. So
how do you do the same thing with an async iterator? I'm not sure
there's a way, currently. That's the question.

Of course, you can always do this:

async for x in aiter: break

as an equivalent to "x = next(aiter)", but that's just stupid :)

ChrisA



More information about the Python-list mailing list