You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 下载网络图片并写入磁盘的提速方法及最优实现

网络图片写入磁盘提速方案

你自测的「写入磁盘耗时5秒」存在统计误差:online_image.read()才是真正拉取图片完整二进制内容的步骤,你把这个步骤和写入绑定执行,相当于下载图片内容和写入磁盘完全串行,所以看起来写入耗时很高。你需要的「加载网络图片同时同步写入磁盘」完全可以实现,优化方案如下:

方案1:修改现有mechanize代码为流式读写

mechanize返回的网络响应本身是类文件对象,不用一次性读取全部内容,按固定块大小边读边写即可,直接减少一半左右的总耗时:

import mechanize

BUFFER_SIZE = 1024 * 1024 # 1M缓存块,可根据实际情况调整
br = mechanize.Browser()
br.set_handle_robots(False)
request = get_request('link.to.image')
online_image = br.open(request)
with open(image_name, 'wb') as f:
    # 循环读块、写块,边下载边写入
    while chunk := online_image.read(BUFFER_SIZE):
        f.write(chunk)

方案2:更换更轻量的HTTP库降低额外开销

mechanize是为模拟浏览器交互设计的重型库,单纯下载图片会有很多无用开销,换成requests这类轻量HTTP库性能会更高,同样支持流式读写:

import requests

BUFFER_SIZE = 1024 * 1024
resp = requests.get('link.to.image', stream=True)
resp.raise_for_status() # 检查请求错误
with open(image_name, 'wb') as f:
    for chunk in resp.iter_content(chunk_size=BUFFER_SIZE):
        if chunk: # 过滤掉保持连接的空块
            f.write(chunk)

额外优化建议

  • 如果需要同时下载多张图片,可以用多线程/协程并发下载,进一步提升整体效率
  • 可以调整缓存块大小:如果存储设备是SSD可以适当调大缓存块,机械硬盘可以根据4K对齐规则调整块大小提升写入效率

内容的提问来源于stack exchange,提问作者オパラ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 20:48:00