cPickle或pickle是否将整个结构加载到内存中?

时间:2012-01-27 22:54:22

标签: python pickle

我有一个程序想要从命令行多次调用,但涉及读取一个大的pickle文件,因此每次调用可能都很昂贵。有什么方法可以让cPickle将文件映射到内存而不是完整地读取它?

1 个答案:

答案 0 :(得分:6)

您可能甚至不需要明确地执行此操作,因为您的操作系统的磁盘缓存可能已经做得非常好。

任何糟糕的性能实际上可能与反序列化的成本有关,而不是从磁盘读取它的成本。您可以通过创建临时ram磁盘并将文件放在那里来测试它。

删除反序列化成本的方法是将文件加载到一个单独的python进程,并将其称为服务。在python中构建一个快速而又脏的REST服务非常简单,在这些情况下非常有用。

看看the socket docs有关如何使用原始套接字执行此操作的信息。 echo服务器是一个很好的例子。