这是一个用于跟踪发生在函数或类内部的malloc的调试工具。

malloc-tracer的Python项目详细描述


LicenseBuild StatusPyPI versionPyversions

malloc_示踪剂

关于

这是一个用于跟踪发生在 函数或类。

importnumpyasnpimportmalloc_tracerdeffunc(x,y,z):dataset1=np.empty((100,),dtype=np.float64)print('x',x)dataset1=np.empty((1000,),dtype=np.float64)l=[iforiinrange(100000)]ifx==0:dataset4a=np.empty((100000,),dtype=np.float64)return0elifx==1:dataset4b=np.empty((100000,),dtype=np.float64)return1dataset3=np.empty((3000,),dtype=np.float64)return2tracer=malloc_tracer.Tracer(func)

这相当于下面的代码。

importnumpyasnpfromtracemallocimportstart,take_snapshot,stopSNAPSHOT=Nonedeffunc(x,y,z):try:start()dataset1=np.empty((100,),dtype=np.float64)print('x',x)dataset1=np.empty((1000,),dtype=np.float64)l=[iforiinrange(100000)]if(x==0):dataset4a=np.empty((100000,),dtype=np.float64)return0elif(x==1):dataset4b=np.empty((100000,),dtype=np.float64)return1dataset3=np.empty((3000,),dtype=np.float64)return2finally:globalSNAPSHOTSNAPSHOT=take_snapshot()stop()

功能

兼容性

malloc_tracer适用于python 3.4或更高版本。

依赖性

安装

pip install malloc-tracer

使用量

跟踪函数。

importnumpyasnpimportmalloc_tracerdeffunc(x,y,z):dataset1=np.empty((100,),dtype=np.float64)print('x',x)dataset1=np.empty((1000,),dtype=np.float64)l=[iforiinrange(100000)]ifx==0:dataset4a=np.empty((100000,),dtype=np.float64)return0elifx==1:dataset4b=np.empty((100000,),dtype=np.float64)return1dataset3=np.empty((3000,),dtype=np.float64)return2
tracer=malloc_tracer.Tracer(func)tracer.trace(target_args=dict(x=1,y=2,z=3))
usage1

用法1

跟踪一个方法。

importnumpyasnpimportmalloc_tracerclassKlass(object):CONSTANT='CONSTANT'def__init__(self,value):self._value=valuedefmethod(self,x):dataset1=np.empty((100,),dtype=np.float64)print('x',x)dataset1=np.empty((1000,),dtype=np.float64)l=[iforiinrange(100000)]ifx==0:dataset4a=np.empty((100000,),dtype=np.float64)return0elifx==1:dataset4b=np.empty((100000,),dtype=np.float64)return1dataset3=np.empty((3000,),dtype=np.float64)return2@staticmethoddefsmethod():dataset=np.empty((100,),dtype=np.float64)l=[iforiinrange(100000)]print('Hello')returndataset@classmethoddefcmethod(cls,var):returncls.CONSTANT+var
instance=Klass(1)tracer=malloc_tracer.Tracer(instance.method)tracer.trace(target_args=dict(x=1))
usage2a

用法2a

跟踪静态方法。

tracer=malloc_tracer.Tracer(Klass.smethod)tracer.trace(target_args=dict())
usage2b

用法2b

跟踪类方法。

tracer=malloc_tracer.Tracer(Klass.cmethod)tracer.trace(target_args=dict(var='Hello world.'))
usage2c

用法2c

显示每个文件的相关跟踪。

importnumpyasnpimportmalloc_tracerglobal_var1=Noneglobal_var2=Nonedeffunc2():globalglobal_var1globalglobal_var2global_var1=np.empty((1000,),dtype=np.float64)global_var2=np.empty((10000,),dtype=np.float64)deffunc(x,y,z):dataset1=np.empty((100,),dtype=np.float64)print('x',x)dataset1=np.empty((1000,),dtype=np.float64)l=[iforiinrange(100000)]func2()ifx==0:dataset4a=np.empty((100000,),dtype=np.float64)return0elifx==1:dataset4b=np.empty((100000,),dtype=np.float64)return1dataset3=np.empty((3000,),dtype=np.float64)return2
tracer=malloc_tracer.Tracer(func)tracer.trace(target_args=dict(x=1,y=2,z=3),related_traces_output_mode=malloc_tracer.RelatedTracesOutputMode.FOR_EACH_FILE)
usage3a

用法3A

按降序显示相关记录道。

tracer=malloc_tracer.Tracer(func)tracer.trace(target_args=dict(x=1,y=2,z=3),related_traces_output_mode=malloc_tracer.RelatedTracesOutputMode.IN_DESCENDING_ORDER)
usage3b

用法3b

便利功能。

malloc_tracer.trace(func,target_args=dict(x=1,y=2,z=3),related_traces_output_mode=malloc_tracer.RelatedTracesOutputMode.IN_DESCENDING_ORDER)

许可证

此软件是在麻省理工学院的许可下发布的,请参阅许可证。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
“电话目录”数据结构的java实现   使用PC remote读取JSP页面上的文件时出现java错误   无法在不同目录中从Java执行Python脚本   java无法在windows 8.1上运行javafx应用程序   java航空公司系统如何防止两个用户同时预订同一个座位?   反射如何在java方法中获取每个参数的名称和值?   阅读中的字符串问题。txt文档并在Java中编辑   java JTextPane行包装问题   使用PowerMock Android Junit时出现java ClassNotFoundException   java输入和If语句   java如何在不使用剪贴板或操作CTRL+C、CTRL+V的情况下将字符串中的“\t”或“tab”发送到selenium中的文本框中   tomcat7将Java应用程序部署到Digitalocean中的Tomcat根目录   响应中嵌套映射的java问题(Jersey)