我刚刚完成了关于用this创建和导入模块的初学者的python练习。
我想知道模块中的所有东西都会被导入到计算机的内存中吗?
随着代码变长,导入的模块变得越来越多,是否会对内存产生影响?
因此,我是否需要了解内存管理才能编写资源高效的代码?
发布于 2011-09-11 00:56:01
我只能想象一种可能被滥用来泄漏内存的导入方式;您可以动态创建和导入任意名称的模块(例如,用于创建插件系统);使用它们一次,然后停止使用它们。如果你通过正常的导入机制,即使用__import__(variable_module_name),这些模块将被添加到sys.modules中,即使它们不会被进一步使用。
解决方案是好的,不要这么做。如果你真的要创建一个插件系统,那么这种动态导入可能是很好的,因为插件会被重用。如果您确实需要使用动态生成的一次性代码,请使用eval。
如果您真的真的需要在动态生成的代码上使用导入(例如,为了进行自动化测试),那么您可能确实需要在sys.modules中查看一下,以便擦除您导入的模块。Here's a nice article explaining how to do something like that.
发布于 2011-09-11 00:25:11
是也不是。
是的,模块确实会被导入到计算机内存中,但不应该因为这个原因而编写资源高效的代码。Python模块非常小(几个KiB,在极少数情况下只有几个MiB),并且对内存使用没有显著影响。
https://stackoverflow.com/questions/7372966
复制相似问题