python - 将对象保留在内存中并避免重新加载 pickle

标签 python multithreading performance memory-management pickle

我正在处理大量的财务数据,这些数据存储在 python 对象集合中。我最初从文本文件中获取数据,创建对象,然后对它们进行pickeling,这样我的机器人就必须再次经历创建对象的过程。 pickle 大小接近 1 GB。

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

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

最佳答案

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

希望这对您有帮助。

关于python - 将对象保留在内存中并避免重新加载 pickle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51660449/

相关文章:

python - 了解 Python 中的 pickle

c++ - 循环范围拆分中的变量预评估

javascript - TCP NODE JS 多线程问题

Android 在 Service 中完成线程并更新 UI

Python 脚本 : How to tell if in O(N) or O(N^2) time?

python - 计算(和写入)文本文件中每一行的词频

python - 如何将值合并到 discord.py 中的一条消息中

sql - 使用子查询提高 UPDATE 查询的性能

c++ - 为什么迭代 `std::vector` 比迭代 `std::array` 更快?

python - Google Wave Python 教程 - 没有任何反应