我一直使用 Python 的timeit
库来为我的小 Python 程序计时。现在我正在开发一个 Django 应用程序,我想知道如何计时我的 Django 函数,尤其是查询。
例如,我的def index(request)
views.py 中有一个在我加载索引页面时会做很多事情的文件。如何timeit
在不改变太多现有功能的情况下使用此特定功能计时?
如果您的 django 项目处于调试状态,您可以使用以下命令查看数据库查询(和时间):
>>> from django.db import connection
>>> connection.queries
我知道这不能满足您对功能分析的需求,但希望它对查询部分有所帮助!
您可以获得的最佳方法是使用Debug Toolbar,您还将获得一些额外的查询优化功能,这将帮助您优化您的数据库查询。
这是另一种解决方案,您可以使用connection.queries
. 这将返回为在命令之前执行的命令执行的 SQLconnect.queries
命令。您可以在获取上一个查询的时间后使用 reset_queries reset_queries()
。使用reset_queries()
不是强制性的。
假设您有一个名为Device的模型。您可以像这样测量查询时间:
>>> from django.db import connection, reset_queries
>>> from appname.models import Device
>>> devices = Device.objects.all()
>>> connection.queries
>>> reset_queries()
任何绊倒此结帐哨兵方法的人。
您可以用您自己的函数替换execute
并executemany
使用您自己的函数来跟踪执行返回所需的时间。
一种简单的方法是创建自定义上下文管理器,该管理器启动一个计时器,并在退出时将计时器的最终值写入您传递给它的数组。
然后你可以检查数组。