我有python代码,我有一个带有pickle load的连续循环。我在循环中有200个pickle文件,每个在SSD驱动器上大约80 MB。
当我运行代码时,我经历了泡菜负载的性能不断波动:大多数在大约0.2秒,但有时它会暂停" 4-6秒贬低了整个过程的基准。
可能是什么问题?
def unpickle(filename):
fo = open(filename, 'r')
contents = cPickle.load(fo)
fo.close()
return contents
for xd in self.X:
tt = time()
xdf = unpickle(xd)
tt = time() - tt
print tt
OUT:
1.87527704239
4.30886101723
0.259668111801
0.234542131424
0.228765964508
0.214528799057
0.213661909103
0.215914011002
0.217473983765
0.225739002228
我创建pickle文件的方式: 我有一个带有列的pandas DataFrame:' name',' source',' level',' image',' path& #39;,' is_train&#39 ;. 关于尺寸的主要数据是'图像'。 我用它来腌制它:
def pickle(filename, data):
with open(filename, 'w') as fo:
cPickle.dump(data, fo, protocol=cPickle.HIGHEST_PROTOCOL)
答案 0 :(得分:3)
您的问题非常不清楚(特别是,您应该给我们足够的信息来自行复制您的测试用例),但感觉就像GC暂停或内存碎片整理一样。
Pickle是一种非常低效的格式,可以处理16千兆字节的数据。它的价值必然会引起一些严重的记忆颠簸。