asyncio 是 Python 用于编写并发代码的库。它使用 async/await 语法,使得编写异步程序变得更加直观和简单。asyncio 主要用于 I/O 绑定和高层次结构化网络代码。
示例代码
以下是一个使用 asyncio 的示例代码,它展示了如何动态添加和管理异步任务。
import asyncio
import sys
import time
stop_event = asyncio.Event()
async def func(name):
i = 0
while not stop_event.is_set():
print(f"{name} : {i}")
i += 1
await asyncio.sleep(1)
async def append_task(name):
task = asyncio.create_task(func(name))
return task
async def listen_for_input():
reader = asyncio.StreamReader()
protocol = asyncio.StreamReaderProtocol(reader)
await asyncio.get_running_loop().connect_read_pipe(lambda: protocol, sys.stdin)
while not stop_event.is_set():
input_line = await reader.readline()
input_line = input_line.decode().strip()
if input_line.lower() == "stop":
stop_event.set()
else:
task = await append_task(input_line)
task_list.append(task)
async def main():
start_time = time.time()
global task_list
task_list = []
input_task = asyncio.create_task(listen_for_input())
# 使用事件循环持续运行,支持动态添加任务
# while not stop_event.is_set():
# await asyncio.sleep(0.1)
await stop_event.wait()
await input_task
await asyncio.gather(*task_list)
end_time = time.time()
print(f"Total run time: {end_time - start_time} seconds")
if __name__ == "__main__":
asyncio.run(main())
6/1/25About 3 min