Python3 profile and pstats — 性能分析
import cProfile
import pstats
import io
# 性能分析的目标函数
def some_function_to_profile():
for i in range(1000):
print(f"Iteration: {i}")
# 运行性能分析并输出结果
pr = cProfile.Profile()
pr.enable()
some_function_to_profile()
pr.disable()
# 将分析结果输出到字符串IO对象
s = io.StringIO()
sortby = 'cumulative' # 可以是'cumulative', 'file', 'line', 'module', 'name', 'ncalls', 'pcalls', 'stdname', 'time'中的一个
ps = pstats.Stats(pr, stream=s).sort_stats(sortby)
ps.print_stats() # 打印排序后的统计信息
print(s.getvalue()) # 打印排序后的统计信息字符串
这段代码首先导入了必要的模块,然后定义了一个将被分析的函数。接着,它使用cProfile.Profile()
创建一个性能分析对象,并启用分析。目标函数被执行后,分析被禁用。然后,分析数据被写入到一个字符串缓冲对象中,并使用pstats.Stats
对象进行排序和格式化输出。最后,打印出排序后的统计信息。这个例子展示了如何进行简单的性能分析并以一种可读的格式输出结果。
评论已关闭