将对象保存在内存中,避免重新加载pickle



我正在处理大量的财务数据,这些数据存储在对象的python集合中。我最初从文本文件中获取数据,创建对象,然后拾取它们,这样我就不必再经历创建对象的过程。泡菜大小接近1gb。

装载泡菜大约需要1分30秒。我需要减少泡菜的装载量。我正在进行不同的模拟,停止和开始跑步。因此,每次我重新运行模拟时,我都需要重新加载pickle。

我试图通过创建一个singleton来解决这个问题,并希望只加载一次pickle。之后,我希望我可以在其他"运行"中访问singleton,而不需要重新加载它,因为它已经在内存中了。然而,这是行不通的。我正在寻找一种解决方案,在不需要重新加载pickle的情况下将对象保存在内存中。有什么建议吗?

你试过Pyro吗?根据我的理解,你需要一个类似内存计算管道的东西。这非常适用于分布式系统上的内存中数据处理(数据流(。它的工作方式类似于客户端-服务器体系结构。您可以创建一个脚本(服务器端(,将pickle对象加载到内存中(仅一次(,并等待来自客户端的远程调用(即使它们在同一台机器上(。你可以在这里找到一些例子:

  • 托管Pyro对象:https://pythonhosted.org/Pyro4/servercode.html
  • 正在调用远程对象:https://pythonhosted.org/Pyro4/clientcode.html

希望这对你有所帮助。

最新更新