Python 如何仅从pickle文件加载选定对象?

Python 如何仅从pickle文件加载选定对象?,python,memory,pickle,Python,Memory,Pickle,我有多个pickle文件,其中包含两个列表。第一个是一个轻量级的浮点列表,但第二个是一个长向量列表,加载时会消耗大量内存。如何仅从每个pickle文件加载第一个列表?这就是我目前的做法: import cPickle, bz2 with bz2.BZ2File(lhl_file, "rb") as pickled_file: pickle_object = cPickle.load(pickled_file) light_list, \ heavy_list =

我有多个pickle文件,其中包含两个列表。第一个是一个轻量级的浮点列表,但第二个是一个长向量列表,加载时会消耗大量内存。如何仅从每个pickle文件加载第一个列表?这就是我目前的做法:

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) 

如果将两个列表分别pickle到pickle文件中,则应该能够轻松地分别加载它们

下面是我从另一个例子中改编的一个例子,它涵盖了更为全面的内容

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:据我所知,在数据1之前加载数据2是不可能的。虽然你似乎不是这样