You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
919 B
46 lines
919 B
import cProfile
|
|
import pstats
|
|
from io import StringIO
|
|
|
|
|
|
def complex_calculation(n):
|
|
"""模拟复杂计算"""
|
|
result = 0
|
|
for i in range(n):
|
|
for j in range(i):
|
|
result += i * j
|
|
return result
|
|
|
|
|
|
def data_processing():
|
|
"""数据处理函数"""
|
|
data = [complex_calculation(i) for i in range(100, 200)]
|
|
return sum(data) / len(data)
|
|
|
|
|
|
def analyze_with_cprofile():
|
|
# 方法1: 使用cProfile.run()
|
|
|
|
profiler = cProfile.Profile()
|
|
profiler.enable()
|
|
|
|
# 执行要分析的代码
|
|
result = data_processing()
|
|
|
|
profiler.disable()
|
|
|
|
# 生成统计报告
|
|
stream = StringIO()
|
|
stats = pstats.Stats(profiler, stream=stream)
|
|
stats.sort_stats('cumulative') # 按累计时间排序
|
|
stats.print_stats(20) # 显示前20行
|
|
|
|
print("\n=== 详细分析报告 ===")
|
|
print(stream.getvalue())
|
|
|
|
return result
|
|
|
|
|
|
# 运行分析
|
|
analyze_with_cprofile()
|