2011-05-15 58 views
8

我有1000個自定義(編譯爲'.so')的模塊,我想在python的同一時間使用。每個這樣的模塊的大小(100 [KB])平均。Python - 限制進口數量?

我的問題是,在python的進口數量是否有限制?許多imports有什麼後果? (例如,這是否需要大量內存)?

我可以導入10,000個自定義模塊嗎? 50,000個模塊?

+16

我的上帝。我不知道答案,但我很想知道是什麼讓你需要問這個問題。 – 2011-05-15 23:47:48

+0

您使用多少個進口?你在什麼時候開始注意到一些不同的東西? – vpit3833 2011-05-15 23:50:48

+1

優秀的問題!這樣的問題使用思考! – 2011-05-15 23:53:19

回答

3

CPython對進口數量沒有限制。但是,每個.so文件都將使用dlopen()打開,該文件不在Python的控制範圍之內 - 因爲符號表需要不斷增長才能收集有關擴展模塊的信息。這些是否具有實際限制也超出了Python的範圍。 CPython本身只會佔用你導入的每個模塊的一些內存,所以只要你有足夠的內存,你應該沒問題。

+0

謝謝。你有什麼想法,當導入時每個'.so'的開銷是多少?是與磁盤上'.so'文件大小相關的開銷?還是它是單獨的(我希望更小)到磁盤上'.so'的大小? – user3262424 2011-05-15 23:51:51

+0

有關每個導入的模塊使用「CPython」佔用多少內存的提示? – user3262424 2011-05-16 00:02:57

+0

Python中的開銷是每個模塊的固定數量,加上模塊中實際*的開銷。它很大程度上取決於Python版本以及它是如何構建的以及模塊實際包含的內容。試試看看。 – 2011-05-16 14:52:59

9

還有對於模塊中的進口數量沒有Python限制。如果任何特定實現有限制,可能是因爲Python解釋器之外的資源限制。

7

單個導入模塊消耗的內存量將至少爲至少,與磁盤上模塊的大小一樣大。開銷取決於操作系統本身(用於加載動態模塊)和Python在導入模塊時的開銷。

因此,如果您的模塊平均大小爲100kB,那麼導入10000個模塊將佔用至少 1 GB的地址空間。導入50000個將超過5 GB。您最好使用具有64位地址空間的操作系統。

+0

感謝您提供此信息 - 這非常有幫助! – user3262424 2011-05-16 00:10:57