写一个python 异步任务 案例
时间: 2024-05-18 10:18:42 浏览: 162
好的,下面是一个简单的Python异步任务案例,使用asyncio模块实现异步下载多张图片:
```python
import asyncio
import aiohttp
async def download_image(session, url):
async with session.get(url) as response:
data = await response.read()
filename = url.split("/")[-1]
with open(filename, "wb") as f:
f.write(data)
print(f"Downloaded {filename}")
async def download_images():
urls = [
"https://www.example.com/image1.jpg",
"https://www.example.com/image2.jpg",
"https://www.example.com/image3.jpg"
]
async with aiohttp.ClientSession() as session:
tasks = [asyncio.create_task(download_image(session, url)) for url in urls]
await asyncio.gather(*tasks)
asyncio.run(download_images())
```
这个程序使用了asyncio和aiohttp模块,实现了异步下载多张图片的功能。在download_images函数中,先定义了要下载的图片的URL列表,然后使用aiohttp创建了一个异步HTTP客户端会话。接着使用asyncio.create_task()方法创建了多个异步任务,每个任务都是调用download_image函数异步下载一张图片。最后使用asyncio.gather()方法并发执行所有任务,并等待所有任务完成。
这个案例展示了如何使用异步任务提高程序的并发性能和响应速度,同时也展示了asyncio和aiohttp模块的基本用法。
阅读全文