我有多个包含两个列表的泡菜文件。第一个是浮点数的轻量级列表,但是第二个是长向量的列表,长向量在加载时会占用大量内存。如何仅从每个泡菜文件中加载第一个列表?这是我目前的做法:
import cPickle, bz2
with bz2.BZ2File(lhl_file, "rb") as pickled_file:
pickle_object = cPickle.load(pickled_file)
light_list, \
heavy_list = list(pickle_object)
答案 0 :(得分:0)
如果您将两个列表分别腌制到一个腌菜文件中,则应该能够轻松地分别加载它们。
这是我改编自另一个answer的一个示例,内容更加详尽。
import pickle
filename = "pickle.dat"
data1 = 'hello'
data2 = 'world'
data3 = 'buddy'
# pickle one object at at time
f1 = open(filename, "wb")
pickle.dump(data1, f1)
pickle.dump(data2, f1)
pickle.dump(data3, f1)
f1.close()
# so that you can load them one at at time
f2 = open(filename, 'rb')
print pickle.load(f2)
print pickle.load(f2)
f2.close()
输出:
hello
world
PS:据我所知,不可能在data1之前加载data2。看来情况并非如此。