据我了解,python (CPython) 中有两种类型的模块: - .so(C 扩展名) - .py
.so 仅加载一次,即使有不同的进程/解释器导入它们也是如此。
.py 为每个进程/解释器加载一次(除非明确重新加载)。
有没有办法让 .py 可以被多个进程/解释器共享?
仍然需要一些层来存储对模块所做的修改。 我认为第一步可以将解释器嵌入 .so 中。是否有已经开发的解决方案。
我承认,就这方面的可行想法而言,我可能还差得很远。请原谅我的无知。
最佳答案
.so
(或.pyd
)文件只占用内存空间一次(除了它们的变量段)的原因是它们被操作系统内核识别为目标代码。 .py
文件只被识别为文本文件/数据;是 Python 解释器授予它们“代码”状态。将 Python 解释器嵌入共享库不会解决此问题。
尽管在多个进程中使用 .py
文件,但只加载一次将需要深入 CPython 内部进行更改。
如果您想节省内存空间,最好的选择是使用Cython 将Python 模块编译为.so
文件。 .这可能需要对模块进行一些更改。
关于Python 共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5068508/