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。有没有什么好的方法/库可以在不定义我自己的类的情况下做到这一点?
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)