我将函数调用为线程,这些线程包含大量的数据,我想在它们使用完之后立即释放它们所使用的内存。以下是我使用的一般格式:
t = thread.start()
threads.append(t)
for thread in threads:
thread.join()现在,线程仍然被thread变量引用这一事实。这是否意味着它内的所有变量也将被保留?
我需要做什么特别的事情来释放这些线程使用的内存吗?
例如,
del variable_referencing_data发布于 2015-12-19 17:36:35
您所指的变量实际上是一个名称,这是一种引用对象的方法。
函数的内容是Python中的一个块。块内的赋值将名称绑定到对象。这个绑定的范围就是块。
因此,一旦函数退出,块的本地名称和它们引用的对象之间的绑定就会丢失。如果这些对象没有其他名称引用它们,它们将被垃圾收集。
这就是为什么通常您不应该担心内存管理;Python会为您处理这个问题。
尝试加载比计算机大得多的数据集(物理内存甚至虚拟内存)是此规则的一个例外。在这种情况下,您需要重新考虑您的策略。
https://stackoverflow.com/questions/34372890
复制相似问题