12

私はいつも Python のtimeitライブラリを使って小さな Python プログラムの時間を計っています。今、私は Django アプリを開発していますが、Django 関数、特にクエリの時間を計る方法を考えていました。

たとえばdef index(request)、インデックス ページをロードするときに、views.py にさまざまな処理を行う があります。timeit既存の関数をあまり変更せずに、この特定の関数の時間を計るにはどうすればよいですか?

4

4 に答える 4

28

django プロジェクトがデバッグ中の場合は、次を使用してデータベース クエリ (および時間) を確認できます。

>>> from django.db import connection
>>> connection.queries

これが関数をプロファイリングする必要性を満たさないことはわかっていますが、クエリの部分に役立つことを願っています!

于 2010-12-09T17:32:19.927 に答える
6

デバッグ ツールバーは必要なものであり、各クエリの時間を計るの に役立ちます。

または、このスニペットも機能します。

http://djangosnippets.org/snippets/93/

于 2010-12-09T17:32:34.430 に答える
5

あなたが得ることができる最良の方法は、デバッグツールバーを使用することです。また、クエリの最適化のためのいくつかの追加機能を取得し、データベースクエリを最適化するのに役立ちます.

ここに別の解決策があります. を使用できますconnection.queries. これは、コマンドの直前に実行されたコマンドに対して作成された SQL コマンドを返しますconnect.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()
于 2019-10-21T09:17:11.277 に答える