python什么时候删除变量?

2024-04-23

我知道 python 有一个自动垃圾收集器,因此当不再引用变量时,它应该自动删除变量。

我的印象是,局部变量(函数内部)不会发生这种情况。

def funz(z):
    x = f(z) # x is a np.array and contains a lot of data
    x0 = x[0]
    y = f(z + 1) # y is a np.array and contains a lot of data
    y0 = y[0]

    # is x and y still available here?
    return y0, x0

Is del x节省内存的正确方法?

def funz(z):
    x = f(z) # x is a np.array and contains a lot of data
    x0 = x[0]
    del x
    y = f(z + 1) # y is a np.array and contains a lot of data
    y0 = y[0]
    del y

    return y0, x0

编辑:我已经编辑了我的示例,使其更类似于我的实际问题。 在我真正的问题中,x和y不是列表,而是包含不同大的类np.array.

编辑:我能够运行代码:

x = f(z)
x0 = x[0]
print(x0)

y = f(z + 1)
y0 = [0]
print(y0)

实现使用引用计数来确定何时应删除变量。

变量超出范围后(如您的示例所示),如果没有剩余的引用,则内存将被释放。

def a():
    x = 5 # x is within scope while the function is being executed
    print x

a()
# x is now out of scope, has no references and can now be deleted

除了字典键和列表中的元素之外,通常没有什么理由手动删除 Python 中的变量。

虽然,正如答案中所说这个问题 https://stackoverflow.com/questions/6146963/when-is-del-useful-in-python,使用 del 有助于显示意图。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python什么时候删除变量? 的相关文章

  • 理解Python中的元类和继承[重复]

    这个问题在这里已经有答案了 我对元类有一些困惑 具有继承性 class AttributeInitType object def init self kwargs for name value in kwargs items setattr
  • Python lambda 函数没有在 for 循环中正确调用[重复]

    这个问题在这里已经有答案了 我正在尝试使用 Python 中的 Tkinter 制作一个计算器 我使用 for 循环来绘制按钮 并且尝试使用 lambda 函数 以便仅在按下按钮时调用按钮的操作 而不是在程序启动时立即调用 然而 当我尝试这
  • Pytorch 损失为 nan

    我正在尝试用 pytorch 编写我的第一个神经网络 不幸的是 当我想要得到损失时遇到了问题 出现以下错误信息 RuntimeError Function LogSoftmaxBackward0 returned nan values in
  • Android - GC 滞后于列表视图滚动“更大”的图像

    在列表视图中 我想在列表条目上绘制一个图像 这 20 张图像必须缩放以填充垂直模式的宽度 手机分辨率为 480 x 800 像素 SGS2 图像分辨率为 400x400 大小约为 100KB 我已将图像放在可绘制文件夹中 当我滚动列表时 它
  • 将新形状传递给“np.reshape”

    Within numpy ndarray reshape https docs scipy org doc numpy reference generated numpy ndarray reshape html the shape参数是一
  • 在 django 中构建动态表单

    我正在尝试根据存储在数据库中的字段及其定义动态构建一个表单 在我的数据库中 我定义了 1 个带有一些标签的复选框和 1 个带有一些标签的文本字段 如何根据数据库中的数据在我的视图中动态构建表单 Thanks 以下是我在 EuroDjango
  • 如何在cvxpy中编写多个约束?

    我想在 cvxpy 下的优化问题中添加许多约束 在 matlab 中 我可以通过添加一行 subject to 然后使用 for 循环来生成约束 我怎样才能在 cvxpy 中做同样的工作 因为 cvxpy 中没有 服从 概念 有什么建议吗
  • Django/gevent socket.IO 与 redis pubsub。我把东西放在哪里?

    我有一个独立的 python 脚本 它只是从 Twitter 的流 API 捕获数据 然后在收到每条消息时 使用 redis pubsub 将其发布到频道 tweets 这是该脚本 def main username username pa
  • 可视化时间序列时标记特定日期

    我有一个包含几年数据的时间序列 例如 ts pd Series np random randn 1000 index pd date range 1 1 2000 periods 1000 ts ts cumsum ts plot 我还有两
  • Python:如何删除圆括号内的文本?

    我试过了 但没用 return re sub myResultStats text 建议 thanks 尝试这个 return re sub myResultStats text 括号表示捕获组 因此您必须转义它们
  • 将带有非字符串关键字的 dict 传递给 kwargs 中的函数

    我使用具有签名功能的库f args kwargs 我需要在 kwargs 参数中传递 python dict 但 dict 不包含关键字中的字符串 f 1 2 3 4 Traceback most recent call last File
  • Flask-httpauth: get_password 装饰器如何为 basic-auth 工作?

    我想知道有没有人用过这个烧瓶延伸 https github com miguelgrinberg flask httpauth简化 http basic auth 基本上我不明白这个example https github com migu
  • 为什么在 python 控制台中对 SparkSession.builder.getOrCreate() 的调用被视为命令行 Spark-submit?

    代替python console我正在尝试创建一个Spark Session 我没有使用pyspark以隔离依赖关系 为什么是spark submit命令行提示并生成错误 NOTE SPARK PREPEND CLASSES is set
  • 包装 C++ Qt 小部件以便在 Python 中与 PySide 一起使用

    在 Python 中使用自定义 Qt 显示小部件包装自定义 C 库以便在基于 PySide 的 QApplication 中使用的最佳方法是什么 C 库是否需要特殊处理才能使用 SWIG 进行包装 封装的 Qt 小部件能否与 PySide
  • captureWarnings 设置为 True 不会捕获警告

    我想记录所有警告 我以为这样的设定captureWarnings to True应该可以解决问题 但事实并非如此 代码 import logging import warnings from logging handlers import
  • 计算素数并附加到列表

    我最近开始尝试使用 python 解决 Euler 项目的问题 并且在尝试计算素数并将其附加到列表中时遇到了这个障碍 我编写了以下代码 但我很困惑为什么它在运行时不输出任何内容 import math primes def isPrime
  • 使用 PuLP 进行线性优化,变量附加条件

    我必须用 Pull 解决 Python 中的整数线性优化问题 我解决了基本问题 现在我必须添加额外的约束 有人可以帮助我用逻辑指示器添加条件吗 逻辑限制是 如果 A gt 20 则 B gt 5 这是我的代码 from pulp impor
  • Python中如何实现相对导入

    考虑 stuff init py mylib py Foo init py main py foo init py script py script py想要进口mylib py 这只是一个示例 但实际上我只想在父目录中进行模块的相对导入
  • 继承自 NumPy 数组的类如何更改其自身的值?

    我有一个继承自 NumPy n 维数组的简单类 我想要该类的两个方法可以更改该类实例的数组值 其中一种方法应将类实例的数组设置为类实例的列表数据属性的值 另一种方法应将一些列表值附加到类实例的数组中 我不确定如何实现这一点 但我的尝试如下
  • 如何访问模板缓存? - 姜戈

    I am 缓存 HTML在几个模板内 例如 cache 900 stats stats endcache 我可以使用以下方式访问缓存吗低级图书馆 例如 html cache get stats 我确实需要对模板缓存进行一些细粒度的控制 有任

随机推荐

  • 仅当通过 AWS CLI 调用 Lambda 时,目标才有效

    我有一个 hello world 测试 Lambda 配置为 触发 API网关 目的地 亚马逊 SQS 一个队列表示成功 另一个队列表示失败 import json def lambda handler event context prin
  • 如何在flyway创建的postgresql jdbc连接上设置时区?

    我有一个 postgresql 数据库 我使用 Flyway 将脚本部署到该数据库 我使用 Maven Flyway 插件启动针对目标数据库的数据库构建 在该构建中 我有一些脚本可以执行以下操作 create table my table
  • 在 OpenGL 中移动相机时出现故障

    我正在为 iPhone 编写一个基于图块的游戏引擎 除了以下故障之外 它基本上可以正常工作 基本上 相机将始终将玩家保持在屏幕中央 并且它会移动以正确跟随玩家并在静止时正确绘制所有内容 然而 当玩家移动时 玩家行走的表面瓷砖会出现故障 如下
  • Rails 嵌套单一资源路由

    我有一个简单的用户模型 带有单个嵌套的配置文件资源 因此在我的routes rb 中我有 resources users do resource profile only gt edit update show end 这会生成预期的路线
  • Octave/Matlab:向向量添加新元素

    有一个向量x我必须添加一个元素 newElem 有什么区别吗 x end 1 newElem and x x newElem x end 1 newElem更稳健一些 x x newElem 仅当x是行向量 如果它是列向量x x newEl
  • 删除方法二叉搜索树

    我正在尝试为我一直在研究的 BST 结构实现一个删除方法 下面是查找 插入和删除方法的代码 public class BST BSTNode root new BSTNode root public void insert BSTNode
  • 如何在 android dexDebug 或 dexRelease 任务之后执行 gradle 任务

    我想在 android 构建过程中在 dexRelease 或 dexDebug 任务之后运行 Gradle 任务来执行一些 shell 脚本 我尝试过以下方法 task taskAfterDex type Exec workingDir
  • AVD 硬件按钮未启用

    I just downloaded and installed the new Android SDK When I start the emulator on the emulator screen it says Hardward Bu
  • 广播接收器在 android oreo 中不工作

    我的广播接收器无法在奥利奥上工作 但它在奥利奥下工作 工作正常 我对此进行了很多搜索 但找不到合适的解决方案 有没有人遇到同样的问题 这是我的关于已实现广播的服务的代码 请建议我如何在奥利奥中工作 这是班级 public int onSta
  • Android开发-SQLite存储float

    当我存储浮点值 widt SQLiteDatabase insert 时 存储的值将与原始值不同 请参见下文 我有一个数据库宽度 db execSQL CREATE TABLE IF NOT EXISTS info values BaseC
  • 如何防止 Angular 2 站点上的浏览器缓存?

    我们目前正在开发一个定期更新的新项目 我们的一位客户每天都在使用该项目 这个项目是使用 Angular 2 开发的 我们面临着缓存问题 也就是说我们的客户在他们的机器上看不到最新的更改 主要是 js 文件的 html css 文件似乎得到了
  • 在 VsCode 中更新笔记本上的环境变量

    我正在使用 VsCode 上的笔记本和 env 文件开发一个 Python 项目 我在尝试刷新笔记本中的环境变量时遇到问题 我找到了一种方法 但非常棘手 我的项目 env 文件包含 MY VAR HELLO ALICE 包含一个单元格的 t
  • 如何测量脚本的执行时间? [复制]

    这个问题在这里已经有答案了 如何测量脚本从开始运行到结束所需的时间 start timing CODE end timing EDIT 2011 年 1 月 这是最佳的可用解决方案 其他解决方案 例如performance now 现在应该
  • Android TimePicker AM/PM 按钮不调用 onTimeChanged

    我在应用程序中实现 TimePicker 时遇到一些问题 该应用程序允许用户在插入数据库记录之前更改数据库记录的时间 问题是 当按下 AM PM 按钮时 不会调用 onTimeChanged View int int 方法 然而 每当我更改
  • Oracle SQL Developer:如何查看引用游标的结果?

    如果我有一个返回查询引用游标的函数 我如何在 SQL Developer 中查看其结果集 Toad 有一个特殊的选项卡 用于查看参考光标的结果 这是我想要找到的功能 SET SERVEROUTPUT ON VARIABLE X REFCUR
  • 为什么 tSQLt 测试在 Visual Studio 测试资源管理器中会通过,而它应该失败?

    我正在编写一些 tSQLt 测试并通过 Visual Studio 的测试资源管理器运行它们tSQLt 测试适配器 https the agilesql club blogs Ed Elliott tSQLt Visual Studio T
  • Heroku Gem 安装后无法使用

    我正在尝试让 heroku 在 Ubuntu 9 10 上运行 I typed sudo gem install heroku 一切正常 但是当我去跑步时 heroku list I get heroku 找不到命令 run 宝石环保看看哪
  • 如何让 git 在 vi​​m 中显示更改,就像 hg 使用 hgeditor 脚本那样?

    Mercurial 的一个有趣的功能是能够查看将在 vim split 中提交的更改 请参阅VIM 中的 DiffsInCommitMessage https www mercurial scm org wiki DiffsInCommit
  • 隐藏折线的正确方法?

    我有一个在地图上显示折线的函数 这部分正在工作 现在我想实现一个隐藏折线的函数 但我找不到我的错误 提前致谢 function cargaMapaCYL mapa varControl var limite null limite new
  • python什么时候删除变量?

    我知道 python 有一个自动垃圾收集器 因此当不再引用变量时 它应该自动删除变量 我的印象是 局部变量 函数内部 不会发生这种情况 def funz z x f z x is a np array and contains a lot