2014-02-26 22 views
1

刚刚有这个问题流入我的脑海。Python - 定期模块导入和取消导入

目前我编写的程序很小,不会运行很长时间。但是很快我就要创建能够在一天中同时运行的程序。也许在这个程序中最初会使用一个模块,但是在一天的大部分时间里都不需要。因此,是否可以卸载一个模块?

在搜索时,我似乎无法找到'是'的答案,那么我是否可以正确地认为它在Python中实际上不可行,即使在当前写作时也是如此?

我知道的唯一功能删除了参考,但不是实际的进口:

import module 
module.X() 
del module 
module.X() 

_

Output: #NameError, can't find `module` 
+0

'del module'会删除本地命名空间中的引用,但它仍然至少会从sys.modules引用,所以模块对象本身不会被gc化(至少与我是正确的,'sys.modules'不使用弱引用,我敢肯定它没有)。 –

+0

[在Python中卸载模块]可能的重复(http://stackoverflow.com/questions/3105801/unload-a-module-in-python) – zhangxaochen

+2

我不知道这是否可能,但我建议不用担心。释放模块不会从根本上减少内存消耗或任何事情。 – Kevin

回答

0

要释放一个不再使用的模块:

del module_name 
del sys.modules[module_name] 

如果你走这条路线,确保在任何需要它的功能中都有该模块的导入。

请注意,这可能对内存消耗的影响很小(如果有的话)。