如何异步迭代范围

pkq*_*xdd 4 python asynchronous python-3.6

在python3.6中,如果我想遍历一个范围,我可以简单地这样做

for i in range(100): pass
Run Code Online (Sandbox Code Playgroud)

但是,如果我想异步迭代一个范围,我该怎么办?我不能做

async for i in range(100): pass # Doesn't work
Run Code Online (Sandbox Code Playgroud)

因为range不是AsyncIterable对象。我能想到的一种解决方案是对范围进行子类化并定义__aiter__方法。但是对我来说感觉真的不是pythonic。有没有什么好的方法/库可以在定义我自己的类的情况下做到这一点?

Vas*_*cal 9

https://www.python.org/dev/peps/pep-0525/#asynchronous-generator-object

您可以使用一个示例函数来代替 range():

async def async_range(count):
    for i in range(count):
        yield(i)
Run Code Online (Sandbox Code Playgroud)