Python 调试语句级性能的正确方法

Python 调试语句级性能的正确方法,python,performance,Python,Performance,我有一个视图,对于每一个语句,我都在其中放入一个time.time()。例如: t1 = time.time() worker_stats = get_worker_stats(worker_id) t2 = time.time() 在程序的最后,我给出了每段代码的结果。例如,对于上述情况: WorkerStats=t2-t1 这对于短期解决方案很好,但是对于生产,它在代码中不断地散布着这些time.time()语句。是否有更好的方法跟踪语句性能,或者这是唯一的方法?使用计时器通常不是衡量性能

我有一个视图,对于每一个语句,我都在其中放入一个
time.time()
。例如:

t1 = time.time()
worker_stats = get_worker_stats(worker_id)
t2 = time.time()
在程序的最后,我给出了每段代码的结果。例如,对于上述情况:

WorkerStats=t2-t1


这对于短期解决方案很好,但是对于生产,它在代码中不断地散布着这些
time.time()
语句。是否有更好的方法跟踪语句性能,或者这是唯一的方法?

使用计时器通常不是衡量性能的好方法

为了提高程序性能,通常使用:

您可以通过以下方式运行此操作:

import cProfile

cProfile.run('get_worker_stats(worker_id)')
或者,您可以决定删除代码中的所有计时器/配置文件语句,并使用以下命令运行:

python -m cProfile program.py
在这种情况下,
python
将运行附加了探查器的程序

很好的一点是,探查器可以跟踪源自顶级调用的所有方法调用、调用函数的次数、平均性能等

通过在顶部调用探查器,您可以简单地忽略中间的所有时间跟踪:只需删除顶部的跟踪语句

此外,您还可以配置配置文件,例如将结果写入单独的文件,以便在忘记删除配置文件器语句的情况下,不会写入输出通道

这演示了如何分析获得的结果