CPickle表现之谜

时间:2015-07-13 17:53:43

标签: python pickle

我有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)

1 个答案:

答案 0 :(得分:3)

您的问题非常不清楚(特别是,您应该给我们足够的信息来自行复制您的测试用例),但感觉就像GC暂停或内存碎片整理一样。

Pickle是一种非常低效的格式,可以处理16千兆字节的数据。它的价值必然会引起一些严重的记忆颠簸。