python面试:使用cProfile剖析程序性能

文章介绍了如何使用Python的cProfile和pstats库对代码进行性能分析,发现waste_time和do_stuff函数是程序中的耗时点。通过tuna安装并生成results.prof文件,展示了如何识别和优化代码效率。
摘要由CSDN通过智能技术生成

我们需要安装tuna:pip install tuna

程序执行完毕后,我们会得到一个results.prof,在CMD中输入指令:“tuna results.prof”。

import time
import cProfile
import pstats

def add(x, y):
  resulting_sum = 0
  resulting_sum += x
  resulting_sum += y
  return resulting_sum

def fact(n):
  result = 1
  for i in range(1, n+1):
    result *= i
  return result

def do_stuff():
  result = []
  for x in range(10000000):
    result.append(x**2)
  return result

def waste_time():
  time.sleep(5)
  print("Hello")

if __name__ == "__main__":
    with cProfile.Profile() as profile:
        print(add(100, 5000))
        print(fact(70))
        print(do_stuff())
        waste_time()

    results = pstats.Stats(profile)
    results.sort_stats(pstats.SortKey.TIME)
    results.print_stats()
    results.dump_stats("results.prof")

结果如下:
在这里插入图片描述
我们可以看到,这个程序中最耗时的函数是waste_time(),用了约5s。其次是do_stuff(),用了3.8s。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值