美文网首页
Python程序内存代码检测

Python程序内存代码检测

作者: 用1心 | 来源:发表于2018-08-22 21:05 被阅读0次

2018-08-22
python对于内存的操作,社区开发了一款比较强大的专门用于检测代码内存使用率的模块,memory_profile是一个使用较为简单的,并且可视化、比较直观的工具模块,可在黑窗口内通过pip工具安装:

pip install memory_profile

通过在测试函数或类型钱添加@profile注解,让内存分析模块可以直接进行代码运行监测,修改上一节代码如下:

from memory_profiler import profile 

@profile 
def chg_data_1(x): 
    x = 12 
    print("method: {}".format(x)) 
 
@profile 
def chg_data_2(y): 
    y.append("hello") 
    print("method: {}".format(y)) 

if __name__ == "__main__": 
    a = 10 
    chg_data_1(a)# 实际参数传递不可变类型
 
    print("main:", a) # 这里 a
是多少 ? 
 
    b = [1,2,3] 
    chg_data_2(b)# 实际参数传递可变类型
 
    print("main:", b) # 这里的 b
是多少 ? 

执行结果如下:

method: 12 
Filename: /Users/wenbinmu/workspace/work_py_spider/case_adv/demo08_内存分析.py 
 
Line #    Mem usage    Increment   Line Contents 
================================================ 
     3     12.5 MiB     12.5 MiB   @memory_profiler.profile 
     4                             def chg_data_1(x): 
     5     12.5 MiB      0.0 MiB       x = 12 
     6     12.5 MiB      0.0 MiB       print("method: {}".format(x)) 
 
 
main: 10 
method: [1, 2, 3, 'hello'] 
Filename: /Users/wenbinmu/workspace/work_py_spider/case_adv/demo08_内存分析.py 
 
Line #    Mem usage    Increment   Line Contents 
================================================ 
     8     12.5 MiB     12.5 MiB   @memory_profiler.profile 
     9                             def chg_data_2(y): 
    10     12.5 MiB      0.0 MiB       y.append("hello") 
    11     12.5 MiB      0.0 MiB       print("method: {}".format(y)) 
 
 
main: [1, 2, 3, 'hello'] 
 
Process finished with exit code 0 

2.3 操作符号:
  ‘is’ , ‘==’,的使用
  在程序执行的过程中,可以通过以上两个操作符号,判断对象和对象之间的关系,返回True或者False。
  A is B:判断对象A和对象B是否同一个内存地址,即是否同一个内存储对象
  A == B:判断A中的内容是否和B中的内容一致
  不论是基本类型的数据,还是内容复杂的对象,都可以通过对象判断符号'is',和内容判断符号 '==' 进行确认。


可变数据类型的内存地址判断


image.png

组合数据类型的数据判断
  创建的每个组合数据类型的对象都是独立的,如下面的代码中a, b变量中分别存放了两个不同的列表类型对象,所以is判断是False,但是值又是相同的所以==判断True:


image.png

相关文章

  • Python程序内存代码检测

    2018-08-22python对于内存的操作,社区开发了一款比较强大的专门用于检测代码内存使用率的模块,memo...

  • 程序内存浅析与内存的代码检测

    程序内存浅析     软件程序在计算机中的执行,主要是通过数据单元、控制单元、执行单元共同协作,完成数据的交互,达...

  • Android性能优化

    android内存监测 LeakCanary 详情一个可以检测程序在运行过程中发生的内存泄漏问题,通过简单的代码配...

  • Python_day2_基础知识

    执行过程 首先来说下python的执行过程: python解释器读取源代码到内存中 解释器进行词法语法检测 解释器...

  • 动态代码检查

    动态代码检查是发生在程序执行过程中的一种检测,检测的内容通常有, 内存泄漏。如:申请的内存没有释放 访问未初始化的...

  • IOS开发内存分析

    摘抄自小码哥教学资料 一.内存分析 1.静态分析(Analyze)不运行程序, 直接检测代码中是否有潜在的内存问题...

  • 关于rust中内存模块-代码分析(一)

    对比现代语法的高级语言如Java/Go/Python等,Rust需要对内存进行控制,即程序可在代码中编写专属内存管...

  • Python内存分析

    1. 内存分析 1.1 程序运行方式 Python执行一个程序:程序就从解释器申请内存 Python解释器:预加载...

  • iOS开发-内存分析

    一.内存分析 1.静态分析(Analyze)不运行程序, 直接检测代码中是否有潜在的内存问题(不一定百分百准确, ...

  • 关于内存

    一.内存分析 1.静态分析(Analyze) 不运行程序, 直接检测代码中是否有潜在的内存问题(不一定百分百准确,...

网友评论

      本文标题:Python程序内存代码检测

      本文链接:https://www.haomeiwen.com/subject/ocquiftx.html