首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >线程函数清除内存

问线程函数清除内存
EN

Stack Overflow用户
提问于 2015-12-19 16:30:35
回答 2查看 499关注 0票数 0

我将函数调用为线程,这些线程包含大量的数据,我想在它们使用完之后立即释放它们所使用的内存。以下是我使用的一般格式:

代码语言:javascript
复制
t = thread.start()
threads.append(t)
for thread in threads:
    thread.join()

现在,线程仍然被thread变量引用这一事实。这是否意味着它内的所有变量也将被保留?

我需要做什么特别的事情来释放这些线程使用的内存吗?

例如,

代码语言:javascript
复制
del variable_referencing_data
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-19 17:36:35

您所指的变量实际上是一个名称,这是一种引用对象的方法。

函数的内容是Python中的一个块。块内的赋值将名称绑定到对象。这个绑定的范围就是块。

因此,一旦函数退出,块的本地名称和它们引用的对象之间的绑定就会丢失。如果这些对象没有其他名称引用它们,它们将被垃圾收集。

这就是为什么通常您不应该担心内存管理;Python会为您处理这个问题。

尝试加载比计算机大得多的数据集(物理内存甚至虚拟内存)是此规则的一个例外。在这种情况下,您需要重新考虑您的策略。

票数 1
EN

Stack Overflow用户

发布于 2015-12-19 16:34:51

在Python中,由于Python的垃圾收集器,通常不需要担心释放内存。有关详细信息,请参阅这个问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34372890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档