首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Pillow python :提高脚本性能

Pillow python :提高脚本性能
EN

Stack Overflow用户
提问于 2018-07-28 21:09:37
回答 1查看 310关注 0票数 2

我有一个简单的脚本,可以从图像URL列表中获取图像大小,但当列表太大时,它太慢了(例如: 120个URL,它可能需要10秒才能运行)

代码语言:javascript
复制
def get_image_size(url):
    data = requests.get(url).content
    try:
        im = Image.open(BytesIO(data))
        size = im.size
    except:
        size = False
    return size

list_images = ['https://example.com/img.png', ...]
for img in list_images:
    get_image_size(img)

我已经尝试过Gevent,它可以让我节省50%的处理时间,但这还不够。我想知道是否有其他方法可以让这个脚本运行得更快?

最终目标是获得数据集的5个最大图像。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-29 17:33:25

您可以使用grequests (请求和gevent),而不是使用Pillow来获取图像大小,您可以从HTTP头标识图像大小:

通常,性能取决于网络连接/服务器速度和镜像大小:

代码语言:javascript
复制
import grequests


def downloadImages(images):
    result = {}
    rs = (grequests.get(t) for t in images)
    downloads = grequests.map(rs, size=len(images))

    for download in downloads:
        _status = 200 == download.status_code
        _url = download.url

        if _status:
            for k, v in download.headers.items():
                if k.lower() == 'content-length':
                    result[_url] = v
                    continue
        else:
            result[_url] = -1
    return result


if __name__ == '__main__':
    urls = [
        'https://b.tile.openstreetmap.org/12/2075/1409.png',
        'https://b.tile.openstreetmap.org/12/2075/1410.png',
        'https://b.tile.openstreetmap.org/12/2075/1411.png',
        'https://b.tile.openstreetmap.org/12/2075/1412.png'
    ]

    sizes = downloadImages(urls)
    pprint.pprint(sizes)

返回:

代码语言:javascript
复制
{'https://b.tile.openstreetmap.org/12/2075/1409.png': '40472',
 'https://b.tile.openstreetmap.org/12/2075/1410.png': '38267',
 'https://b.tile.openstreetmap.org/12/2075/1411.png': '36338',
 'https://b.tile.openstreetmap.org/12/2075/1412.png': '30467'}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51571729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档