Python - 限制进口数量?

时间:2011-05-15 23:43:11

标签: python

我有1000个自定义(编译为'.so')模块,我想在python同时使用它们。每个此类模块的平均大小(100 [KB])。

我的问题是,python中的导入数量是否有限制?许多imports的后果是什么? (例如,这需要大量内存吗?)

我可以导入10,000个自定义模块吗? 50,000个模块?

3 个答案:

答案 0 :(得分:9)

模块中没有Python限制导入数。如果在任何特定实现中存在限制,则可能是因为Python解释器之外的资源限制。

答案 1 :(得分:8)

单个导入模块消耗的内存量将与最小一样大,与磁盘上模块的大小相同。开销由操作系统本身(用于加载动态模块)和Python导入模块的开销决定。

因此,如果您的模块平均大小为100kB,那么导入其中的10000个将占用至少 1 GB的地址空间。导入50000将超过5 GB。您最好使用具有64位地址空间的操作系统。

答案 2 :(得分:3)

CPython对进口数量没有限制。但是,每个.so文件都将使用dlopen()打开,而{{1}}不在Python的控制之内 - 因为符号表需要不断增长以收集有关扩展模块的信息。这些是否具有实际限制也超出了Python的范围。 CPython本身只占用你导入的每个模块的一些内存,所以只要你有足够的内存就可以了。