在 Python shell 和 *.py 文件中运行时 Python 不同的内存管理行为

2024-01-04

示例1:

➜  /tmp  cat t.py 
a = 250000000000
b = 250000000000
print id(a), id(b), id(a) == id(b)
➜  /tmp  python t.py 
140450848587992 140450848587992 True  #(Why is True?)

示例2:

➜  /tmp  python
Python 2.7.10 (default, Oct 23 2015, 19:19:21) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 250000000000
>>> b = 250000000000
>>> print id(a), id(b), id(a) == id(b)
140443481339400 140443481339208 False #(I think it should be False)

我知道Python有一个小的整数缓存池(从-5到256),所以两个大整数应该始终有不同的id。

如何解释大整数在 Python shell 和 *.py 文件中运行时的不同行为?


如果我是读取 .py 文件的 Python 解释器(如第一个示例中所示),我只会为此数字分配一次内存,然后进行a and b指向这个位置。

例如,解释器读取此文件并看到两个变量被分配了相同的值,并思考:“我想通过为相同的值分配两个部分来浪费内存吗?不,我不想。相反,我最好分配一个块并将该值存储在其中”。那么,就只有one该值的副本,这就是这些变量具有相同 id 的原因。

第二种情况Pythonhas赋值的时候要分配内存,所以有两块内存有相同的数据。

综上所述,在第一种情况下,解释器对代码了解更多(给出了整个代码),因此它可以optimize它(并生成.pyo文件),而在第二个中它根本无法进行任何优化。

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

在 Python shell 和 *.py 文件中运行时 Python 不同的内存管理行为 的相关文章

  • 使用 OpenCV 和/或 Numpy 对两个图像进行 Alpha 混合 [重复]

    这个问题在这里已经有答案了 我想将一个填充纯色的半透明矩形添加到已加载的半透明 PNG 中 这是我正在使用的输入图像示例 该图像加载了标准cv2 IMREAD UNCHANGED标志 以便完美保留 alpha 通道 该输入图像存储在imag
  • 如何使用 conda 在一行中安装多个包?

    我需要使用 conda 安装以下多个软件包 我不确定 conda forge 是什么 有些使用 conda forge 有些不使用它 是否可以将它们安装成一行而不需要一一安装 谢谢 conda install c conda forge d
  • 以矢量化方式在另一个 DataFrame 中查找包含值子集的行

    如何匹配此 DataFrame 中的值source car id lat lon 0 100 10 0 15 0 1 100 12 0 10 0 2 100 09 0 08 0 3 110 23 0 12 0 4 110 18 0 32 0
  • 正则表达式,选择最接近的匹配

    假设以下单词序列 BLA text text text text text text BLA text text text text LOOK text text text BLA text text BLA 我想做的是将 BLA 中的文本
  • 组和平均 NumPy 矩阵

    假设我有一个任意的 numpy 矩阵 如下所示 arr 6 0 12 0 1 0 7 0 9 0 1 0 8 0 7 0 1 0 4 0 3 0 2 0 6 0 1 0 2 0 2 0 5 0 2 0 9 0 4 0 3 0 2 0 1 0
  • 在Python中以交互方式执行多行语句

    我是 Python 世界的新手 这是我用 Python 编写的第一个程序 我来自 R 世界 所以这对我来说有点不直观 当我执行时 In 15 import math import random random random math sqrt
  • Python——捕获异常的效率[重复]

    这个问题在这里已经有答案了 可能的重复 Python 常见问题解答 异常有多快 https stackoverflow com questions 8107695 python faq how fast are exceptions 我记得
  • Django 模型字段默认基于另一个模型字段

    我使用 Django Admin 构建一个管理站点 有两张表 一张是ModelA其中有数据 另一个是ModelB里面什么也没有 如果一个模型字段b b in ModelB为None 可以显示在网页上 值为ModelA的场a b 我不知道该怎
  • 按多个键分组并对字典列表的值进行汇总/平均值

    在Python中按多个键进行分组并对字典列表进行汇总 平均值的最Pythonic方法是什么 假设我有一个字典列表 如下所示 input dept 001 sku foo transId uniqueId1 qty 100 dept 001
  • Pandas groupby apply 执行缓慢

    我正在开发一个涉及大量数据的程序 我正在使用 python pandas 模块来查找数据中的错误 这通常工作得非常快 然而 我当前编写的这段代码似乎比应有的速度慢得多 我正在寻找一种方法来加快速度 为了让你们正确测试它 我上传了一段相当大的
  • pandas 中连续数据的平行坐标图

    pandas 的 parallel coordinates 函数非常有用 import pandas import matplotlib pyplot as plt from pandas tools plotting import par
  • 使用 WSGI 在 Windows XAMPP 中设置 Python 路径

    我正在 Webfaction 上设置实时服务器的开发版本 在本地计算机上的虚拟 Apache 服务器环境 运行没有任何错误 中运行 Django 应用程序 XP 使用 Python 2 6 运行 XAMPP Lite 我可以提交更改通过 G
  • 具有多个主键的 SQLAlchemy 不会自动设置任何

    我有一个简单的表 class test Base tablename test id Column Integer primary key True title Column String def init self title self
  • 线性同余生成器 - 如何选择种子和统计检验

    我需要做一个线性同余生成器 它将成功通过所选的统计测试 我的问题是 如何正确选择发电机的数字以及 我应该选择哪些统计检验 我想 均匀性的卡方频率测试 每代收集10 000个号码的方法 将 0 1 细分为10个相等的细分 柯尔莫哥洛夫 斯米尔
  • 更换壳牌管道[重复]

    这个问题在这里已经有答案了 在 subprocess 模块的 Python 2 7 文档中 我找到了以下片段 p1 Popen dmesg stdout PIPE p2 Popen grep hda stdin p1 stdout stdo
  • 沿轴 0 重复 scipy csr 稀疏矩阵

    我想重复 scipy csr 稀疏矩阵的行 但是当我尝试调用 numpy 的重复方法时 它只是将稀疏矩阵视为对象 并且只会将其作为 ndarray 中的对象重复 我浏览了文档 但找不到任何实用程序来重复 scipy csr 稀疏矩阵的行 我
  • Pip 无法在 Windows 上安装 Twisted

    我正在尝试在 Windows 8 计算机上安装 Twisted 在 Twisted 官方网站上 只有一个 Windows 版的 Wheel 文件 https twistedmatrix com trac wiki Downloads htt
  • 如何使用 Pandas Series 绘制两个不同长度/开始日期的时间序列?

    我正在绘制 每周总事件 的几个熊猫系列对象 系列中的数据events per week看起来像这样 Datetime 1995 10 09 45 1995 10 16 63 1995 10 23 83 1995 10 30 91 1995
  • 使用 SERVER_NAME 时出现 Flask 404

    在我的 Flask 配置中 我将 SERVER NAME 设置为 app example com 之类的域 我这样做是因为我需要使用url for with external网址 如果未设置 SERVER NAME Flask 会认为服务器
  • Python 中的字符串slugification

    我正在寻找 slugify 字符串的最佳方法 蛞蝓 是什么 https stackoverflow com questions 427102 in django what is a slug 我当前的解决方案基于这个食谱 http code

随机推荐

  • 在 Ubuntu 上找不到 RODBC 包中的 odbcConnectExcel 函数

    在 Ubuntu 上安装 RODBC 包有点麻烦 首先我学会了安装以下内容 sudo apt get install r cran rodbc 这还不够好 因为包仍在寻找头文件 我通过以下方式解决了这个问题 sudo apt get ins
  • 导出或保存 CX509PrivateKey

    是否可以以某种方式保存或导出CX509PrivateKey 我的想法是 我创建一个 CSR 发送给 CA 获取证书 然后 不知何故我必须获取私钥 但不知道如何获取 不幸的是在谷歌上没有找到任何内容 我的一段代码 var objPrivate
  • SQL INSERT 不指定列。会发生什么?

    在浏览心爱的 W3schools 时发现了这个page http www w3schools com sql sql insert asp并且实际上学到了一些有趣的东西 我不知道您可以调用插入命令而不指定值的列 例如 INSERT INTO
  • 使用jquery删除字符串中的span标签

    如何使用jquery从字符串中删除span标签 我在字符串变量中有多个跨度标签 p No Change span style color 222222 nbsp span I love cricket span style color 22
  • 满足条件后避免使用 IF 语句

    我在一个重复多次的循环内进行除法运算 碰巧的是 在循环的前几次 或多或少的前 10 个循环 中 除数为零 一旦它获得价值 除零误差就不再可能 我有一个if测试除数值的条件以避免 div 为零 但我想知道评估此值会对性能产生影响if在后续循环
  • Android 开发人员通常在 iPhone 上使用第三方 UI/网络库(例如 Three20)吗?

    我做过很多 iPhone 方面的工作 但从来没有做过 Android 方面的工作 在 iPhone 上 几个月后我发现了 Three20 库 非常棒 并开始移动我的代码 我不想在转向 Android 时犯同样的错误 所以我的问题是 Andr
  • Scala 2.10 TypeTag 用法

    我正在挖掘新的 scala 反射 api 但无法弄清楚为什么以下代码片段不能按预期工作 给定层次结构 尽力简化 import scala reflect runtime universe trait TF A implicit def t
  • 任务并行性 - 任务 OnCompleted 在所有ContinueWith之后触发

    我在处理任务时遇到问题 GetAwaiter OnCompleted new Action 我有一个带有多个ContinueWith的主任务 但是当我返回主任务并在OnCompleted上添加委托时 它会在处理主任务后触发 而不是在所有Co
  • 每个循环使用 Rspec 的单元测试用例

    我的模型中有以下方法 def get performance data para child para hash performance graph data child para hash each do cp performance g
  • onclick 事件传递
  • id 或值
  • 我想通过 li id or value in onclick事件 这是我的退出代码 li li value 1 li li value 2 li 这是 JavaScript 代码 function getPaging str loading
  • SSL/TLS 中的相互身份验证

    我是 SSL 身份验证的新手 我需要使用 SSL 在信任边界上对两个架构组件进行身份验证 我可以控制这两个组件 我想我需要两种方式的 SSL 身份验证 服务器和客户端都有证书 证书可以自签名吗 即由供应商签名 这不会首先使使用 SSL 无效
  • jqgrid客户端排序desc/asc

    我已经看到了这个问题的许多变体 并且我尝试使用所有知识 但仍然没有运气 我的日期正在从旧到新排序 我想将它们从新到旧排序 在你看到 desc 的地方 我尝试过 asc 但没有改变 当我尝试分页时 它似乎触发了重新加载 并且排序是正确的 从新
  • 如何找出与矩阵的特定特征值相对应的特征向量?

    如何找出与特定特征值对应的特征向量 我有一个随机矩阵 P 其特征值之一是1 我需要找到与特征值1对应的特征向量 scipy 函数scipy linalg eig http docs scipy org doc scipy reference
  • 如何为 TextView 文本添加下划线并更改下划线的颜色

    我想为文本视图文本添加下划线并将下划线的颜色更改为蓝色 我已经这样做了 但我的代码正在更改文本视图和下划线的颜色 我只想更改下划线的颜色 我们应该怎么做 TextView tv TextView findViewById R id tv S
  • Swing GridBagLayout 组件调整大小

    我正在开发一个项目 我的目标是使组件根据窗口的大小调整大小 我在用GridBagLayout为此 但是在窗口大小调整时调整组件大小时我遇到了一些问题 当我给出我的组件时weighty值 一切都很好 组件垂直调整大小 http imagesh
  • 如何格式化 SQLAlchemy ORM Postgresql CIDR contains (>>) 查询

    我有一个定义的模型 from app import db from sqlalchemy dialects import postgresql class TableIpAddress db Model tablename ipaddres
  • [Statsmodels]:如何让 statsmodel 返回 OLS 对象的 pvalue?

    我对编程还很陌生 我正在尝试使用 Python 来熟悉数据分析和机器学习 我正在学习有关多元线性回归的向后消除的教程 这是现在的代码 Importing the libraries import numpy as np import mat
  • Android 4.x RemoteControlClient.setTransportControlFlags() 不起作用?

    我正在尝试使用 RemoteControlClient 类来支持我的应用程序的锁屏播放器 一个问题是设置传输控制标志似乎无法正常工作 例如 我试图只显示播放 停止图标 而不显示上一个 下一个 mRemoteControlClient set
  • Terracotta Cluster 仍然开源吗?

    如果是的话 在哪里可以找到它 根据this http www infoq com news 2006 12 terracotta jvm clusteringinfoq条目 他们已经开源了 但目前他们的网站上还没有这样的产品 这一页 htt
  • 在 Python shell 和 *.py 文件中运行时 Python 不同的内存管理行为

    示例1 tmp cat t py a 250000000000 b 250000000000 print id a id b id a id b tmp python t py 140450848587992 140450848587992