版权声明:CSDN 博主刘康康 https://blog.csdn.net/liiukangkang/article/details/83063558
1.内存分析
python源代码[后缀名为.py的文本文件]
运行在解释器中,得到运算结果
问题:怎么运行的?
计算机运行一个程序
程序/软件的运行[核心机制]
源代码程序[语义化的定义了数据、流程等控制单元]
内存操作[加载内存->变量/函数/类型/方法…]
运算处理[执行运算的过程,需要提取数据执行运算(按照流程进行逻辑控制)]
既然所有的软件,都是这样运行的,直接运行就好!为什么还要分析运行过程中的内存?
因为需要在有限的硬件资源上,运行尽可能多的软件,需要有效的利用内存空间。
比如一台计算机硬件[内存|硬件|8G]
操作系统[系统软件]:控制和管理硬件操作,完成软件数据处理
使用硬件内存运行操作系统软件[2G已用|6G可用]
直接分配内存空间,操作使用内存数据
–>应用软件:执行各种业务相关的数据运算
–>每个软件运行,都需要内存]
–>向操作系统申请内存,操作系统给对应的软件分配内存
–>软件在申请到的内存中分配数据,加载数据、完成软件的执行
目标:软件的运行,需要将软件数据加载到内存中。
2.PYTHON中的内存处理
python程序是怎么运行的?
python需要一个开发/运行环境,开发好的python程序可以通过执行命令python 文件名 直接运行
核心:一个python程序要要运行,就需要向解释器申请运行的内存空间
为了提高程序执行效率和有效的利用内存空间,将申请到内存空间进行了区域划分
- 栈内存和堆内存
- 静态区/常量区
- 数据区/方法区
python交互模式下的代码演示
python交互模式下
代码演示:
"""
Version 1.1.0
Author lkk
Email [email protected]
DESC TODO
"""
def back(m):
m.append('10')
def back2(n):
n = 12
if __name__ == "__main__":
a = [20]
b = 20
back(a) # ? 发生了什么
back2(b) # ? 发生了什么
print(a) # [20, '10']!? 什么结果 **A[20, '10']**? B[20]? C['10']?
print(b) # 20!? 什么结果 **A20**? B12? C2012?
内存运行分析