我们正在写一个内存紧张的系统。有多个python进程将导入同一组类。如果进程加载了大量的类,而每个进程消耗几百兆字节,那么10个进程和我一起运行到gig中。有没有一种方法可以跨python进程“共享”类导入?在
小结:
import classA # Process 1 : loads classA in memory
import classA # Process 2 : reuses what was loaded previously by Process 1
PS:我试图实现的是在C/C++中使用{{CD1>}模块的方法。在
Tags:
如果您的操作系统支持高效的写时复制fork(很多情况下都支持),那么至少可以节省一点内存。只要
import
所有内容都在父对象中一次,然后fork()
创建所有子对象。在请注意,如果有许多小对象,则不会保存任何内容,因为需要写入对象的引用计数。但是,使用诸如属性字典之类的大型静态结构可以节省大量资源。在
我不相信这在python的设计中是不可能的。如果这是一个大问题,您可能希望使用线程而不是单独的进程。另外,如果你仅仅通过导入几个模块就运行了100meg,那么你可能在模块中做了一些错误的事情(似乎要使用相当多的内存)。在
一种可能性,如果你必须完全导入所有的东西,不能减少内存使用量,不能使用线程,则是将大内存代码移动到用C/C++编写的Python扩展。那么在python库中共享的进程将允许您共享这个库中的公共扩展。它还可以在一定程度上减少内存占用。在
在python中,你实际上是在导入模块,而不是类。类似于C/C++中的头文件,而不是类。在
相关问题 更多 >
编程相关推荐