我认为这是不可能的,即使可能性很小。通过在某个文件的代码中运行“del module”并不能将其从内存中删除:所有已加载的模块都可以从全局的“sys.modules”字典中获取。如果你从“sys.modules”中删除了该模块,那么可以释放一些空间,但我认为Python仍然会保留至少定义在该模块中的类的引用(即使你的代码中没有实例或其他对这些类的引用)。总而言之,大多数模块只能让你回收几千字节的空间。如果要卸载具有多兆字节内存影响的模块(例如Pandas/matplotlib/sqlalchemy),成功的可能性更小,因为这些代码库的复杂性意味着它们具有许多内部交叉引用,你需要从“sys.modules”中删除它们内部导入的所有内容。如果设置基于这样的多兆字节框架,并且你正在运行一个非常有限的系统(如树莓派级别的迷你PC,仅有几MB),那么可以尝试在子进程中执行初始化,并在完成后终止该进程,这将确保释放内存。但除了有限的硬件外,你应该不必担心这个问题。
del
吗? - Igor Rivindel np
的东西。 - Derek Edenimport gc; gc.collect()
的语句可能有助于垃圾回收,但我不确定它是否适用于导入的包。gc — 垃圾回收器接口 - bug_spray