[英]How to reduce time to load a pickle file in python or map a pickle file to disk
我想加载大小为 4.23GB 的泡菜文件。 我使用下面的代码来加载数据:
import _pickle as cPickle
def read_pickle(file):
try:
with open(file, "rb") as input_file:
data = cPickle.load(input_file)
return data
except Exception as e:
print("Error in reading data from pickle file",e)
系统配置:16核32GB RAM
Output:
%time data=read_pickle(file)
CPU times: user 5.79 s, sys: 1.21 s, total: 7 s
Wall time: 7 s
由于多个用户在代码中使用它,所以我想在我的代码中加载这个文件一次并每次都使用它的返回数据,无论如何,map 这个文件到磁盘以避免每次加载文件或减少加载时间。
文件中存储了哪些类型的数据? 如果它只包含数据,我建议寻找替代方案。 如果它包含实例或其他数据,请尝试更改 dunder 方法getstate和setstate以避免存储无用数据,如原始数据、临时数据结构等。
7 秒是将 4 GB 文件读回 RAM 并重新创建您拥有的结构的合适时间。
对于有关为多个用户提供服务的查询,您可能需要查看 Redis(或任何其他内存中键值数据结构服务器)来保存数据并从那里为用户提供服务,而不是从每个用户的 pickle 文件中重新创建。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.