2011-07-25 74 views
4

內存成本顯然取決於模塊的大小,但我只是在尋找一個普通答案:在Python中導入模塊通常費用昂貴或便宜嗎?如果我有幾十個小腳本可能留在整個應用程序的內存中,那麼會佔用多少內存?Python:導入模塊的內存成本

+0

我不會擔心它,除非你是在嵌入式平臺或其他東西。爲什麼不試試看。大多數(所有?)操作系統都可以查看進程正在使用多少內存。 –

+0

@gnibbler當然,但他們通常不是很準確。現代操作系統中的內存管理涉及多層煙霧和鏡像。但我同意它不可能無論如何:) –

回答

7

這聽起來像你不擔心時間成本(好,這將是愚蠢的,因爲模塊只進口一次),但內存成本。我把它給你:如果你需要這些模塊中的所有功能,那麼你打算如何計劃避免他們都在內存中?也許最合乎邏輯的方式只是import事情。

也就是說,在Python import是一個語句,而不是某種類型的預處理指令(或類似的),所以你可以延遲一個模塊的導入,直到你真正需要它的內容爲止,只需安排語句運行在適當的時候。這對於一些特別大型或複雜的項目來說可能是一個有意義的優化,或者至少讓棘手的事情成爲可能。請記住,當您參考foo.bar時,Python編譯器不會嘗試檢查是否存在foo;在運行時查看每個名字。鴨子打字在這裏發揮作用; foo.bar代碼不在乎foo是否是模塊,類或對象的名稱。 (這基本上是因爲模塊和類對象,但我離題...)

+0

這實質上是Bazaar DVCS所做的事情;你可能想看看它的源代碼和它的「lazy_import」機制。 –