Python 共享库

标签 python multithreading dynamic multiprocessing dynamic-linking

据我了解,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/

相关文章:

Python - 如何按照指定的属性顺序对对象数组进行双重排序?

java - 数学密集型、基于计算的网站 - 我应该使用哪种语言?

multithreading - "any"代码的 Perl 异步任务,不管它是什么?

c++ - (C++) 如何挂起主线程,然后在另一个线程中恢复?

c# - 突出显示代码中的动态调用

动态页眉页脚liferay

c# - 动态 LINQ 查询嵌套对象

python - 提取括号中的单词并将提取的单词存储到集合中

linux - Linux 内核中的上下文切换时间

python - 安装成功后无法导入库