python项目中的“填坑”记录
基础
Python是动态类型的语言,Python中任何事物皆对象,如变量、数据结构、函数、类、模块等等,在创建一个对象的时候就会占用内存,Python中对象和引用是分离。Python的内存管理是由Python进程的私有堆空间管理的,所有的Python对象都存储在进程的私有对空间中。
在创建一个对象的时候,分配堆空间内存是由Python的内存管理模块实现的,无需用户单独申请内存,核心API会提供一些方位该模块的方法。Python对堆内存的回收,是指Python自有的垃圾回收机制,以回收并释放没有被使用的内存。
内存泄露分析
Python 内存泄漏问题排查
填坑总结:python内存泄漏排查小技巧
排查python内存泄露中几个工具的使用
python3 内存泄露定位工具
用memory_profiler对Python代码进行剖析
pip install memory_profiler
memory_profiler是用Python编写的,可以用pip安装。该软件包将包括库,以及一些命令行实用程序。以跨平台的方式访问进程信息,因此它可以在Windows、Mac和Linux上使用。
为了提供逐行输出的结果,memory_profiler 需要用@profile 装饰器来装饰一个方法(装饰function,而不是class?)。
使用@profile(precision=4)装饰时,统计内存精确到小数点后四位。
配置精度,将结果输出到日志,装饰器如下:
@profile(precision=4, stream=open("memory_profiler.log", "w+"))
更多应用设置可以参考Python内存分析工具:memory_profiler。
也可以用 mprof run test.py
生成该项目运行的内存监控.dat文件,使用 mprof plot
画出最新dat文件内容,或者mprof plot name.dat
画出特定文件内容。
更多关于mprof命令,可参考Python代码优化工具——memory_profiler。
python 性能分析(时间,空间)之 line_profiler 模块 ,memory_profiler的使用
压测
主要是基于Linux系统。测试QPS。
Locust性能测试之快速入门
Python压力测试工具——Locust
【Linux】【压测】关于python实现性能自动化工具之Locust