前言:
目前同学们对“python性能如何”大概比较注重,大家都需要知道一些“python性能如何”的相关资讯。那么小编在网摘上汇集了一些对于“python性能如何””的相关知识,希望各位老铁们能喜欢,同学们一起来了解一下吧!导读
相信日常使用Python作为生产力的读者,一定会存在想要分析代码中每一行的运行时间与变量占用内存大小的需求,本文主要分析两个模块,用于分析每行代码的内存使用情况和运行时间情况。
内存使用memory-profiler[1]安装
pip install memory-profiler使用方法一在需要分析的函数上,添加装饰器@profile
@profiledef test1(): c=0 for item in xrange(100000): c+=1 print (c)使用下面的命令运行
python -m memory_profiler memory_profiler_test.py使用方法二
from memory_profiler import profile @profile(precision=4,stream=open('memory_profiler.log','w+'))# @profiledef test1(): c=0 for item in xrange(100000): c+=1 print c# 直接运行即可结果
Filename: memory_profiler_test.pyLine # Mem usage Increment Line Contents================================================ 5 21.492 MiB 21.492 MiB @profile 6 def test1(): 7 21.492 MiB 0.000 MiB c=0 8 21.492 MiB 0.000 MiB for item in xrange(100000): 9 21.492 MiB 0.000 MiB c+=1 10 21.492 MiB 0.000 MiB print cMem usage: 内存占用情况Increment: 执行该行代码后新增的内存运行时间line-profiler[2]安装
pip install line-profiler使用在需要分析的函数上,添加装饰器@profile
@profiledef slow_function(a, b, c): ...运行
python -m line_profiler script_to_profile.py.lprof结果
Pystone(1.1) time for 50000 passes = 2.48This machine benchmarks at 20161.3 pystones/secondWrote profile results to pystone.py.lprofTimer unit: 1e-06 sFile: pystone.pyFunction: Proc2 at line 149Total time: 0.606656 sLine # Hits Time Per Hit % Time Line Contents============================================================== 149 @profile 150 def Proc2(IntParIO): 151 50000 82003 1.6 13.5 IntLoc = IntParIO + 10 152 50000 63162 1.3 10.4 while 1: 153 50000 69065 1.4 11.4 if Char1Glob == 'A': 154 50000 66354 1.3 10.9 IntLoc = IntLoc - 1 155 50000 67263 1.3 11.1 IntParIO = IntLoc - IntGlob 156 50000 65494 1.3 10.8 EnumLoc = Ident1 157 50000 68001 1.4 11.2 if EnumLoc == Ident1: 158 50000 63739 1.3 10.5 break 159 50000 61575 1.2 10.1 return IntParIO每列含义
> - Line #: The line number in the file.> - Hits: The number of times that line was executed.> - Time: The total amount of time spent executing the line in the timer's units. In the header information before the tables, you will see a line "Timer unit:" giving the conversion factor to seconds. It may be different on different systems.> - Per Hit: The average amount of time spent executing the line once in the timer's units.> - % Time: The percentage of time spent on that line relative to the total amount of recorded time spent in the function.> - Line Contents: The actual source code. Note that this is always read from disk when the formatted results are viewed, *not* when the code was executed. If you have edited the file in the meantime, the lines will not match up, and the formatter may not even be able to locate the function for display.参考资料
[1]memory-profiler:
[2]line-profiler:
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #python性能如何