执行Python脚本时如何跳过数据加载代码行以避免重复加载大文件?
实现方案
核心逻辑是把首次加载生成的numpy数组持久化到本地二进制缓存文件,后续运行脚本时优先读取缓存,不需要再重新解析CSV,速度能提升几十到上百倍。
方法1:使用numpy原生的save/load实现(最推荐,无需额外依赖)
代码修改如下:
import os from numpy import genfromtxt, load, save CACHE_PATH = "data_cache.npy" if os.path.exists(CACHE_PATH): # 缓存存在直接读缓存,耗时通常在毫秒级 data = load(CACHE_PATH) else: # 首次运行无缓存,走原CSV加载逻辑 data = genfromtxt("images.csv", delimiter=',', skip_header=1) # 加载完存缓存,下次直接用 save(CACHE_PATH, data) print(data.size)
- 优势:完全兼容numpy数组格式,读写速度极快,不需要额外安装第三方库
- 如果后续CSV文件更新了,手动删掉
data_cache.npy就会自动重新生成缓存
方法2:使用joblib做缓存(适合超大数组,内存占用更友好)
如果你的数组特别大,joblib的序列化效率比numpy原生更高:
import os from numpy import genfromtxt import joblib CACHE_PATH = "data_cache.joblib" if os.path.exists(CACHE_PATH): data = joblib.load(CACHE_PATH) else: data = genfromtxt("images.csv", delimiter=',', skip_header=1) joblib.dump(data, CACHE_PATH) print(data.size)
- 注意需要先安装joblib:
pip install joblib
交互式场景补充(Jupyter Notebook/Lab)
如果是在Notebook环境下开发,可以把CSV加载的代码单独放在一个单元格,首次运行后,后续修改其他代码不需要重新运行该单元格,内存里的data变量会一直保留,不需要额外写缓存逻辑。
内容的提问来源于stack exchange,提问作者Bilkent Ogrencisi
相关产品推荐
相关产品推荐

