我希望profile我的python代码尽可能多的参数: 1.时间(目前有memory_profiler) 2.记忆(目前有cProfile或profile) 3. I / O - 每秒读/写字节数(没有找到任何)
最简单的事情(据我所知)是在上面的模块上使用-m标志(例如 python -m cProfile [-o output_file] [-s sort_order] myscript.py )
那么,如何对memory_profiler和cProfile / profile模块使用-m标志?
答案 0 :(得分:1)
我不相信你可以在多个模块中使用-m标志。但是,在脚本中使用cProfile并不困难:
import cProfile, pstats
profiler = cProfile.Profile() # create profiler
profiler.enable() # start profiling
# do stuff
profiler.disable() # end profiling
with open('profile.txt', 'w') as fo: # open a file to print the stats
pstat_profile = pstats.Stats(profiler, stream=fo) # create a pstats object from the profile bound to a file stream
pstat_profile = print_stats() # print stats to a file
这将为您提供一个漂亮而有条理的时间统计打印输出。现在,您可以使用-m为memory_profiler运行此修改过的脚本并同时使用。
我不知道有任何基于Python的工具来监控访问。但是,Google搜索“测量IO速度”会在所有地方出现点击,因此您应该能够找到第三方实用程序(或者如果您使用的是Linux,则可以找到一些内置工具like DD)您可以在启动脚本时用于跟踪IO性能。
您最终会在IO记录器内部的内存分析器下运行时间分析脚本,但我认为它们应该很好地协同工作,并且它们的交互应该很容易发现。例如,时间分析器的脚本内启动将在内存配置文件中显示为内存分配,但您知道可以忽略它们。