这是一个用于跟踪发生在函数或类内部的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将Map<String,String>传递给需要Map<String,Object>   java在循环中使用字符串而不是StringBuilder是否会造成内存损失?   jnlp如何更新java控制台JRE?   java更改、修改和重新打包CXFAPI源文件   JavaFXJava应用程序在Fedora上运行一段时间后关闭   使用来自不同类的方法的java   java如何通过ant脚本在linux中使用subst?   java在使用camunda modeler进行base64编码/解码时出错   获取java。netbeans、weblogic和fastswap设置为true时的lang.NoSuchMethodError   java如何提高FinalizerThread在GC中收集对象的优先级   java检测具有相同根的单词   netbeans crud应用程序中的java错误