2

Django では、以下のミドルウェア Cprofiler スニペット /from http://djangosnippets.org/snippets/727/を使用しています)

並べ替えに使用するものを変更するにはどうすればよいですか? sort_stats() を使用したい場合、それはコードのどこに行くのですか?

import sys
import cProfile
from cStringIO import StringIO
from django.conf import settings

class ProfilerMiddleware(object):
    def process_view(self, request, callback, callback_args, callback_kwargs):
        if settings.DEBUG and 'prof' in request.GET:
            self.profiler = cProfile.Profile()
            args = (request,) + callback_args
            return self.profiler.runcall(callback, *args, **callback_kwargs)

    def process_response(self, request, response):
        if settings.DEBUG and 'prof' in request.GET:
            self.profiler.create_stats()
            out = StringIO()
            old_stdout, sys.stdout = sys.stdout, out
            self.profiler.print_stats(1)
            sys.stdout = old_stdout
            response.content = '<pre>%s</pre>' % out.getvalue()
        return response
4

2 に答える 2

0

sort_stats 関数を探していると思いますが、print_stats の直前に配置する必要があります。

 def process_response(self, request, response):
    if settings.DEBUG and 'prof' in request.GET:
        self.profiler.create_stats()
        out = StringIO()
        old_stdout, sys.stdout = sys.stdout, out
        self.profiler.sort_stats('name')
        self.profiler.print_stats(1)
        sys.stdout = old_stdout
        response.content = '<pre>%s</pre>' % out.getvalue()
    return response

これも見てくださいhttp://docs.python.org/2/library/profile.html

于 2012-11-26T11:05:12.107 に答える
0

sort_stats() は、プロファイラーで直接使用できません。ここで解決策を見つけました:

http://djangosnippets.org/snippets/1579/

于 2012-12-03T20:18:53.083 に答える