我有1000个自定义(编译为'.so')模块,我想在python
同时使用它们。每个此类模块的平均大小(100 [KB]
)。
我的问题是,python
中的导入数量是否有限制?许多imports
的后果是什么? (例如,这需要大量内存吗?)
我可以导入10,000个自定义模块吗? 50,000个模块?
答案 0 :(得分:9)
模块中没有Python限制导入数。如果在任何特定实现中存在限制,则可能是因为Python解释器之外的资源限制。
答案 1 :(得分:8)
单个导入模块消耗的内存量将与最小一样大,与磁盘上模块的大小相同。开销由操作系统本身(用于加载动态模块)和Python导入模块的开销决定。
因此,如果您的模块平均大小为100kB,那么导入其中的10000个将占用至少 1 GB的地址空间。导入50000将超过5 GB。您最好使用具有64位地址空间的操作系统。
答案 2 :(得分:3)
CPython对进口数量没有限制。但是,每个.so
文件都将使用dlopen()
打开,而{{1}}不在Python的控制之内 - 因为符号表需要不断增长以收集有关扩展模块的信息。这些是否具有实际限制也超出了Python的范围。 CPython本身只占用你导入的每个模块的一些内存,所以只要你有足够的内存就可以了。