介绍

通常我们可以用python profiler去分析应用程序中哪个模块被多次调用和那个程序部分运行的速度较为缓慢,但是并不能够准确给出我们应用程序在运行中在内存中占用的大小。

比如说在金融数据中会操作大量的实际数据驻存到内存中,并对数据空间大小和性能能够有更好的优化,就需要考虑内存的测量,保证不会造成程序在运行中过载的压力引发程序上的异常。

有些情况下在python中定义类class 会开辟更多的内存,尤其是创建更多的实例数据就会内存的大量占用。有些情况下需要在类中定义__slots__来封装属性,但是这样会破坏类中内置的__dict__.

对于大量的数据运算和分析,这时候对内存的分配就需要额外的关注和分析,能够得到程序在运行时的内存方面的统计能够更好的提升程序的性能。

Valgrind

Valgrind 能够动态分析程序性能的工具,能够自动测量内存管理和线程中的Bug,给出更详细的测量工具。

内存错误探测

双线程错误探测

缓存和分支结构分析器

堆分析器

程序调用结构缓存和分支结构分析器

简单介绍一下Valgrind,更详细的内容可以参考官网.

示例

如何用来分析python方面程序的性能呢?

比如在做大量数据运算和分析上,用pytables读取大量数据,pytables的数据存贮是采用HDF5存贮结构进行数据存贮,HDF5是支持大量数据读取和性能上有一定的提升相对于数据库系统,但是并不能是一个有效的数据库系统,这里不要误解,HDF5是对某些数据的高速读取和录入上有很好的性能,不是一个关系型数据库也不是NoSQL数据库。HDF5玩起来非常的不容易。这里采用了两个库numpy和 pytables,这里在HDF5创建50个array dataset,每个array的长度为10000000。python的代码:

import tables

import numpy as np

h5file = tables.openFile('test4.h5', mode='w', title="Test Array")

array_len = 10000000

arrays = np.arange(50)

for x in arrays:

x_a = np.zeros(array_len, dtype=float)

h5file.createArray(h5file.root, "test" + str(x), x_a)

h5file.close()

如何分析性能

massif

massif 能够检测系统中的内存占用情况。我们将上述的代码保持成test.py

valgrind --tool=massif python test.py

然后我们就会生成一个massif.out.???中的内容,然后我们可以用 ms_print 命令。

massif.out.12076 > profile.txt

MB

558.5^ #. .. .

| #: :: :

| #: :: :

| @::#:: ::: :: @::

| @::#:: ::: :: @::

| ,. @.:#::. ::: ::.@::

| @: @::#::: ::: :::@::

| @: @::#::: ::: :::@::

| , @: @::#::: ::: :::@::

| @ @: @::#::: ::: :::@::

| @ @: @::#::: ::: :::@::

| @@ @: @::#::: ::: :::@::

| @@ @: @::#::: ::: :::@::

| @@ @: @::#::: ::: :::@::

| ::::@@ @: @::#::: ::: :::@::

| ::::@@ @: @::#::: ::: :::@::

| ,::::@@ @: @::#::: ::: :::@::

| @::::@@ @: @::#::: ::: :::@::

| @::::@@ @: @::#::: ::: :::@::

| ...,....@::::@@ @: @::#::: ::: :::@:.

0 +----------------------------------------------------------------------->Gi

0 7.121

程序在启动中大概占用了500m的内存容量,通过图表我们可以直观的看到内存的数据增长,并且能够有效的理解内存上的分配数据。

后续我们就可以通过代码上的优化调整内存中的数据和性能。

python程序内存分析_python 如何测量运行中的程序内存 -- Valgrind相关推荐

  1. linux 程序占内存,linux下,一个运行中的程序,究竟占用了多少内存

    1. 在linux下,查看一个运行中的程序, 占用了多少内存, 通常的命令有php (1). ps aux:html 其中  VSZ(或VSS)列 表示,程序占用了多少虚拟内存.linux RSS列 ...

  2. JAVA内存分析:使用JDK自带工具进行内存和CPU分析及垃圾回收

    JAVA内存分析:使用JDK自带工具进行内存和CPU分析及垃圾回收 JAVA内存分析一:基于dump内存溢出快照分析 JAVA内存分析二:idea集成jprofiler查看JVM内存使用情况 JAVA ...

  3. python 内存分析_python内存管理分析

    本文较为详细的分析了python内存管理机制.分享给大家供大家参考.具体分析如下: 内存管理,对于Python这样的动态语言,是至关重要的一部分,它在很大程度上甚至决定了Python的执行效率,因为在 ...

  4. python调用外部程序 退出_Python调用(运行)外部程序

    在Python中可以方便地使用os模块运行其他的脚本或者程序,这样就可以在脚本中直接使用其他脚本,或者程序提供的功能,而不必再次编写实现该功能的代码.为了更好地控制运行的进程,可以使用win32pro ...

  5. 如何用python进行相关性分析_Python文章相关性分析---金庸武侠小说分析

    最近常听同事提及相关性分析,正巧看到这个google的开源库,并把相关操作与调试结果记录下来. 小说集可以百度<金庸小说全集 14部>全(TXT)作者:金庸 下载下来. 需要整理好格式,门 ...

  6. python 小说人物分析_Python文章相关性分析---金庸武侠小说分析

    最近常听同事提及相关性分析,正巧看到这个google的开源库,并把相关操作与调试结果记录下来. 小说集可以百度<金庸小说全集 14部>全(TXT)作者:金庸 下载下来. 需要整理好格式,门 ...

  7. python开发微信群_Python编程:微信群聊程序的开发与进/线程知识汇总(附代码)

    本文承接上篇文章的客户端-服务器聊天对话程序,进一步设计开发了微信群聊的python模拟程序,涉及的python知识点为:Python实战:聊天软件开发与TCP/Socket编程知识汇总(附代码)和 ...

  8. python教程案例分析_Python实用教程(含典型案例视频分析)

    目 录 第一部分 基 础 篇 第1章 Python,掀起你的盖头来1 1.1 Python简介1 1.2 安装Python及其扩展库2 1.2.1 安装Python2 1.2.2 Python集成开发 ...

  9. [转载] python字符串情感分析_python进行情感分析

    参考链接: 在Python中从字符串中删除停用词stop word python进行情感分析 发布时间:2018-02-10 09:57, 浏览次数:549 , 标签: python 一.数据获取 在 ...

最新文章

  1. httpClient 超时时间设置
  2. 项目: 图书管理系统 【C++ / C】
  3. 腾讯内部产品课:细分用户
  4. nyoj-491--幸运三角形--简单深搜枚举(TLE)
  5. 必备9种能力、9种手段、9种心态
  6. c语言dnf脚本源码,dnf纯脚本源码贝贝
  7. 【裴礼文数学分析】例1.1.2
  8. VMware下安装win7教程
  9. dos命令查看电脑配置
  10. 弱光图像增强(Low-light image enhancement)资料整理(更新中...)
  11. 基于新睿云laas搭建web应用之nginx服务
  12. 商业发掘 - 苹果 IOS 充值代充,充值卡为什么会便宜,以及其中的一些门道
  13. pyton对txt文件的读取写入和加密(含代码)
  14. 在vue中将数据导出为excel文件file-saver+xlsx+script-loader
  15. SPSS学习(1)之数据录入与数据获取
  16. 单片机课程设计——基于51单片机温湿度检测系统的设计与实现
  17. FAQ:Nacos报错:server is DOWN now, please try again later!
  18. 什么是jsp,它有什么用+jsp的本质是什么
  19. UI设计规范有哪些?| 萧蕊冰
  20. CentOS 安装Httpie

热门文章

  1. 通过网络连接检测计算机病毒,网络安全习题及答案
  2. 联想ghost重装系统_联想怎么安装ghostwin7系统的教程
  3. html登陆l判断,html作业登陆界面
  4. yum命令 启用仓库_yum仓库详细解读
  5. Mybatis的入门到精通这一篇文章就够了
  6. wordpress ?php the_time() ?,WordPress时间函数the_time与get_the_time解析
  7. php时间转两位数年份,PHP常用时间函数资料整理
  8. 更改计算机语言win7,windows7专业版怎么更改语言_如何更改windows7专业版语言
  9. python教程1003无标题_OSError:[WinError 10038]试图对非s的对象执行操作
  10. 服务器维修工单,运维工单--服务器申请工单