微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python - 循环遍历大列表并快速下载图像

如何解决Python - 循环遍历大列表并快速下载图像

所以目前我有这个代码,它完美地按照我的预期工作。

import urllib.request
from tqdm import tqdm

with open("output.txt","r") as file:
    itemIDS = [line.strip() for line in file]

x = 0

for length in tqdm(itemIDS):
    urllib.request.urlretrieve(
        "https://imagemocksite.com?id="+str(itemIDS[x]),"images/"+str(itemIDS[x])+".jpg")
    x += 1

print("All images downloaded")

我四处寻找,发现的解决方案并不是我真正想要的。我有 200mbp/s,所以这不是我的问题。

我的问题是我的循环每秒迭代 1.1 - 1.57 次。我想加快速度,因为我有超过 5k 张图片要下载。它们每个也大约 1-5kb。

此外,如果有人有任何代码提示,我将不胜感激!我正在学习 python,它很有趣,所以我想尽可能地变得更好!

编辑: 使用下面有关 asyncio 的信息,我现在得到 1.7-2.1 It/s,这更好!可以更快吗?也许我用错了?

import urllib.request
from tqdm import tqdm
import asyncio

with open("output.txt","r") as file:
    itemIDS = [line.strip() for line in file]

async def download():
    x = 0
    for length in tqdm(itemIDS):
        await asyncio.sleep(1)
        urllib.request.urlretrieve(
            "https://imagemocksite.com?id="+str(itemIDS[x]),"images/"+str(itemIDS[x])+".jpg")
        x += 1

asyncio.run(download())
print("All images downloaded")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。