3
我有一个程序想要从命令行多次调用,但涉及读取一个大的pickle文件,因此每个调用都可能会很昂贵。有什么方法可以让cPickle将文件映射到内存中,而不是完整地读取它?cPickle或pickle是否将整个结构加载到内存中?
我有一个程序想要从命令行多次调用,但涉及读取一个大的pickle文件,因此每个调用都可能会很昂贵。有什么方法可以让cPickle将文件映射到内存中,而不是完整地读取它?cPickle或pickle是否将整个结构加载到内存中?
你可能甚至不需要明确地做到这一点,因为你的操作系统的磁盘缓存可能会做一个该死的好工作。
任何糟糕的性能实际上可能与反序列化的成本有关,而不是从磁盘读取它的成本。您可以通过创建临时RAM磁盘并将文件放在那里来测试。
而删除反序列化代价的方法是将文件加载到一个单独的python进程并称之为服务。在Python中构建一个快速而又脏的REST服务在这些情况下是超级简单和超级有用的。
看看the socket docs关于如何用原始套接字来做到这一点。回声服务器就是一个很好的例子。