gur*_*shi 5 python shared-libraries
我们正在编写一个内存紧张的系统.有多个python进程将导入同一组类.如果进程加载了大量的类,每个进程消耗了几百兆,那么就有10个进程,我正在进行演出.有没有办法跨python进程"共享"类导入?
摘要:
import classA # Process 1 : loads classA in memory
import classA # Process 2 : reuses what was loaded previously by Process 1
Run Code Online (Sandbox Code Playgroud)
PS:我想要实现的是用.soC/C++中的模块做的事情.
我不相信这在Python的设计中是可能的。如果这是一个大问题,您可能需要使用线程而不是单独的进程。另外,如果您仅通过导入几个模块来运行 100 Megs,那么您可能在模块中做错了什么(看起来需要使用相当多的内存)。
如果您绝对必须导入所有内容,无法减少内存使用并且无法使用线程,则一种可能性是将大内存代码移至用 C/C++ 编写的 python 扩展中。这样您就可以跨进程共享 Python 扩展所在的共享库的公共段。它还可能会在一定程度上减少内存占用。
PS 在 python 中,你实际上是导入模块,而不是类。与在 C/C++ 中包含头文件而不是类的方式类似。