python多任务协程
时间: 2024-09-30 11:00:21 浏览: 35
在Python中,协程(coroutines)是一种轻量级的并发机制,它允许程序在执行过程中挂起并恢复,而不需要创建新的线程或进程。使用asyncio库,Python提供了一种方便的方式来编写高效的并发代码,特别适合处理I/O密集型任务,如网络请求、文件读写等。
协程的核心是异步函数(async def),它们可以包含await关键字用于等待某个操作完成。当await语句被执行时,当前协程会暂停,让出控制权给其他可以运行的任务。当等待的操作完成后,通过调用下一个await表达式或返回结果,协程可以继续执行。
下面是一个简单的例子:
```python
import asyncio
async def fetch_data(url):
# 模拟耗时操作
await asyncio.sleep(1)
return f"Data from {url}"
async def main():
tasks = [fetch_data("https://example.com") for _ in range(5)]
responses = await asyncio.gather(*tasks) # 同时执行所有任务
for response in responses:
print(response)
asyncio.run(main()) # 运行主协程
```
在这个例子中,`main`协程创建了五个协程来并发地获取数据。`asyncio.gather`函数允许我们同时等待所有的协程完成,并将结果收集起来。
阅读全文