Bre*_*dan 12 python memory web
情况就是这样:我有一个需要加载到内存中的大型对象.如此大,如果它被加载两次,它将超出我的机器上的可用内存(并且不,我无法升级内存).我也不能把它分成任何小块.为简单起见,我们只说对象是600 MB而我只有1 GB的RAM.我需要在一个运行在多个进程中的Web应用程序中使用此对象,而我无法控制它们是如何生成的(第三方负载均衡器会这样做),因此我不能仅仅依赖于创建对象在一些主线程/进程中,然后产生孩子.这也消除了使用POSH之类的可能性,因为它依赖于它自己的自定义fork调用.我也不能使用类似SQLite内存数据库,mmap或posix_ipc,sysv_ipc和shm模块的东西,因为它们充当内存中的文件,而这些数据必须是我使用它的对象.使用其中一个我必须将其作为文件读取,然后将其转换为每个单独进程和BAM中的对象,因为我只是尝试加载第二个副本,因此超出了机器的内存限制.
必须有一些东西将Python对象存储在内存中(而不是文件/字符串/序列化/ pickle),并且可以从任何进程访问它.我只是不知道它是什么.我已经遍布StackOverflow和谷歌,但找不到答案,所以我希望有人可以帮助我.
http://docs.python.org/library/multiprocessing.html#sharing-state-between-processes
查找共享内存或服务器进程。重新阅读您的后服务器进程后,听起来更接近您想要的。
http://en.wikipedia.org/wiki/Shared_memory