如何在Python 3.10中实现输出1至10且间隔1秒的异步迭代器与程序
Python 3.10 两个功能实现方案
1. 返回1至10的异步迭代器(每个元素返回前等待1秒)
要实现异步迭代器,需遵循Python异步迭代协议:实现__aiter__和__anext__方法,其中__anext__必须是异步函数。
import asyncio class Async1To10: def __init__(self): self.current = 1 def __aiter__(self): return self async def __anext__(self): if self.current > 10: raise StopAsyncIteration num = self.current self.current += 1 await asyncio.sleep(1) # 等待1秒后返回当前数值 return num # 测试代码 async def main(): async for number in Async1To10(): print(number) if __name__ == "__main__": asyncio.run(main())
这个类从1开始迭代到10,每次返回元素前暂停1秒。使用async for遍历异步迭代器,通过asyncio.run()启动异步主程序。
2. 打印1至10的整数(每打印一个后等待1秒)
提供两种实现方式,按需选择:
同步实现(简单直接)
import time for num in range(1, 11): print(num) time.sleep(1)
time.sleep(1)会阻塞整个线程,适合单任务简单场景。
异步实现(非阻塞)
import asyncio async def print_sequence(): for num in range(1, 11): print(num) await asyncio.sleep(1) if __name__ == "__main__": asyncio.run(print_sequence())
asyncio.sleep(1)不会阻塞事件循环,适合需同时运行其他异步任务的场景。
内容的提问来源于stack exchange,提问作者Bennet Benny
相关产品推荐
相关产品推荐

