python下载图片的协程
时间: 2023-10-29 15:56:30 浏览: 168
python协程gevent案例 爬取斗鱼图片过程解析
你可以使用协程来下载图片。在Python中,可以使用`asyncio`库来实现协程。下面是一个简单的示例代码,演示了如何使用协程下载图片:
```python
import aiohttp
import asyncio
import os
async def download_image(url, save_path):
async with aiohttp.ClientSession() as session:
async with session.get(url) as response:
if response.status == 200:
with open(save_path, 'wb') as f:
while True:
chunk = await response.content.read(1024)
if not chunk:
break
f.write(chunk)
print(f"Downloaded {url} to {save_path}")
else:
print(f"Failed to download {url}")
async def main():
image_urls = [
'https://example.com/image1.jpg',
'https://example.com/image2.jpg',
'https://example.com/image3.jpg',
]
tasks = []
for idx, url in enumerate(image_urls):
save_path = f'image{idx+1}.jpg'
task = asyncio.create_task(download_image(url, save_path))
tasks.append(task)
await asyncio.gather(*tasks)
if __name__ == "__main__":
asyncio.run(main())
```
在上述代码中,`download_image`函数使用`aiohttp`库发送HTTP请求并保存图片到指定路径。`main`函数是入口函数,创建了多个任务(每个任务对应一个图片URL),然后通过`asyncio.gather`同时运行这些任务。
注意:上述代码仅为示例,实际使用时可能需要进行错误处理、异常处理和路径检查等。此外,如果要大量下载图片,可能需要对并发连接数进行限制,以避免给服务器造成过大的负载。
阅读全文