CPickle性能之谜

2024-04-29 11:45:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有python代码,其中有一个带pickle负载的连续循环。我在循环中有200个pickle文件,每个文件在一个SSD驱动器上大约80mb。你知道吗

当我运行代码时,我体验到pickle负载的性能是不断波动的:主要在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

输出:

1.87527704239
4.30886101723
0.259668111801
0.234542131424
0.228765964508
0.214528799057
0.213661909103
0.215914011002
0.217473983765
0.225739002228

我创建pickle文件的方式: 我有一个pandas数据框,列为:“name”,“source”,“level”,“image”,“path”,“is\u train”。 有关尺寸的主要数据是“图像”。 我用以下方法腌制它:

def pickle(filename, data):
    with open(filename, 'w') as fo:
        cPickle.dump(data, fo, protocol=cPickle.HIGHEST_PROTOCOL)

Tags: 文件数据代码datatimedefcontentsopen
1条回答
网友
1楼 · 发布于 2024-04-29 11:45:58

你的问题非常不清楚(特别是,你应该给我们足够的信息,让我们自己复制你的测试用例),但这感觉像GC暂停或内存碎片整理。你知道吗

Pickle是一种非常低效的格式,处理16gb的数据必然会导致严重的内存破坏。你知道吗

相关问题 更多 >