情况如下:我有一个巨大的对象需要加载到内存中。如此之大,以至于如果它被加载两次,它将超出我机器上的可用内存(不,我无法升级内存)。我也不能把它分成任何更小的部分。为简单起见,假设对象为 600 MB,而我只有 1 GB 的 RAM。我需要从在多个进程中运行的 Web 应用程序中使用此对象,并且我无法控制它们的生成方式(第三方负载均衡器会这样做),因此我不能仅仅依赖于创建对象在一些主线程/进程中,然后产生子进程。这也消除了使用诸如 POSH 之类的东西的可能性,因为这依赖于它自己的自定义 fork 调用。我也不能使用诸如 SQLite 内存数据库、mmap 或 posix_ipc 之类的东西,sysv_ipc 和 shm 模块,因为它们充当内存中的文件,并且这些数据必须是我使用它的对象。使用其中一个我必须将其作为文件读取,然后将其转换为每个单独进程和 BAM 中的对象,由于我只是试图加载第二个副本,因此超出机器的内存限制会导致分段错误。
必须有某种方式将 Python 对象存储在内存中(而不是作为文件/字符串/序列化/腌制)并使其可以从任何进程访问。我只是不知道它是什么。我已经查看了 StackOverflow 和 Google,但找不到答案,所以我希望有人能帮助我。