赞
踩
上官网地址:https://pypi.org/project/memory-profiler/
- # _*_coding:utf-8_*_
- # Python程序内存分析
- from memory_profiler import profile
-
-
- @profile(precision=4) # 统计内存的精度
- def my_func():
- import time
- a = [1, 3, 4, 5]
- for i in a:
- pass
- return time.time()
-
-
- if __name__ == '__main__':
- my_func()
python -m memory_profiler script.py
***命令行运行会丢失精度***
- # _*_coding:utf-8_*_
- # Python程序内存分析
- from memory_profiler import profile
-
-
- # 使用装饰器,配置精度,将结果输出到日志
- @profile(precision=4, stream=open("memory_profiler.log", "w+"))
- def my_func():
- import time
- a = [1, 3, 4, 5]
- for i in a:
- pass
- return time.time()
-
-
- if __name__ == '__main__':
- my_func()
mprof的可用命令是:
- mprof run:运行可执行文件,记录内存使用情况
- mprof plot:绘制一个记录的内存使用情况(默认情况下,最后一个)
- mprof list:以用户友好的方式列出所有记录的内存使用情况文件。
- mprof clean:删除所有记录的内存使用情况文件。
- mprof rm:删除特定记录的内存使用情况文件
- mprof run script.py # 运行程序,会生成一个结果数据文件
- mprof plot # 根据最后一条数据文件生成图表
- 方式一:总结所有子进程的内存和父进程的使用情况并跟踪每个子进程
- mprof run --include-children <script>
-
-
-
- 方式二:独立于主进程跟踪每个子进程,通过索引将子行序列化到输出流。使用多进程
-
- mprof run --multiprocess <script>
可以根据使用的内存量设置断点。也就是说,您可以指定一个阈值,一旦程序使用的内存超过阈值中指定的内存,它将停止执行并运行到 pdb 调试器中。要使用它,您必须使用@profile装饰上一节中完成的函数,然后使用选项-m memory_profiler --pdb-mmem=X运行您的脚本,其中 X 是一个数字,表示以 MB 为单位的内存阈值. 例如:
$ python -m memory_profiler --pdb-mmem=100 my_script.py
一旦代码在装饰函数中使用超过 100 MB,将运行my_script.py并进入 pdb 调试器。
- # _*_coding:utf-8_*_
- # Python程序内存分析
- from memory_profiler import profile, memory_usage
-
-
- # 使用装饰器,配置精度,将结果输出到日志
- # @profile(precision=4, stream=open("memory_profiler.log", "w+"))
- def my_func():
- import time
- a = [1, 3, 4, 5]
- for i in a:
- pass
- return time.time()
-
-
- # proc=-1 为当前进程
- # interval 以1秒的间隔获取timeout时间内的内存使用情况
- me = memory_usage(proc=-1, interval=1, timeout=10)
-
-
- if __name__ == '__main__':
- # my_func()
- print(me)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。