调试语句级performan的正确方法

2024-05-17 07:15:41 发布

您现在位置:Python中文网/ 问答频道 /正文

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

t1 = time.time()
worker_stats = get_worker_stats(worker_id)
t2 = time.time()

在程序的最后,我给出了每段代码的结果。例如,对于上述情况:

WorkerStats = t2 - t1

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


Tags: 方法代码程序视图idgettimestats
1条回答
网友
1楼 · 发布于 2024-05-17 07:15:41

无论如何,使用计时器通常不是衡量性能的好方法

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

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

import cProfile

cProfile.run('get_worker_stats(worker_id)')

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

python -m cProfile program.py

在这种情况下python将运行附加了探查器的程序

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

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

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

这个talk at PyCon演示了如何分析获得的结果

相关问题 更多 >