Skip to content

Commit edf74be

Browse files
committed
Start of splitting off data collection classes and panel classes.
1 parent 7ba80e0 commit edf74be

File tree

3 files changed

+48
-29
lines changed

3 files changed

+48
-29
lines changed

debug_toolbar/debug/__init__.py

Whitespace-only changes.

debug_toolbar/debug/timer.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
try:
2+
import resource
3+
except ImportError:
4+
pass # Will fail on Win32 systems
5+
import time
6+
7+
8+
class DebugTimer(object):
9+
try: # if resource module not available, don't show content panel
10+
resource
11+
except NameError:
12+
has_resource = False
13+
else:
14+
has_resource = True
15+
16+
def elapsed_ru(self, name):
17+
return getattr(self._end_rusage, name) - getattr(self._start_rusage, name)
18+
19+
def start(self, request):
20+
self._start_time = time.time()
21+
if self.has_resource:
22+
self._start_rusage = resource.getrusage(resource.RUSAGE_SELF)
23+
24+
def stop(self, request, response):
25+
self.total_time = (time.time() - self._start_time) * 1000
26+
if self.has_resource:
27+
self._end_rusage = resource.getrusage(resource.RUSAGE_SELF)
28+

debug_toolbar/panels/timer.py

Lines changed: 20 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -6,60 +6,51 @@
66
from django.template.loader import render_to_string
77
from django.utils.translation import ugettext_lazy as _
88
from debug_toolbar.panels import DebugPanel
9+
from debug_toolbar.debug.timer import DebugTimer
910

1011
class TimerDebugPanel(DebugPanel):
1112
"""
1213
Panel that displays the time a response took in milliseconds.
1314
"""
1415
name = 'Timer'
15-
try: # if resource module not available, don't show content panel
16-
resource
17-
except NameError:
18-
has_content = False
19-
has_resource = False
20-
else:
21-
has_content = True
22-
has_resource = True
16+
17+
def __init__(self, context={}):
18+
super(TimerDebugPanel, self).__init__(context)
19+
self.timer = DebugTimer()
20+
self.has_content = self.timer.has_resource
2321

2422
def process_request(self, request):
25-
self._start_time = time.time()
26-
if self.has_resource:
27-
self._start_rusage = resource.getrusage(resource.RUSAGE_SELF)
23+
self.timer.start(request)
2824

2925
def process_response(self, request, response):
30-
self.total_time = (time.time() - self._start_time) * 1000
31-
if self.has_resource:
32-
self._end_rusage = resource.getrusage(resource.RUSAGE_SELF)
26+
self.timer.stop(request, response)
3327

3428
def nav_title(self):
3529
return _('Time')
3630

3731
def nav_subtitle(self):
3832
# TODO l10n
39-
if self.has_resource:
40-
utime = self._end_rusage.ru_utime - self._start_rusage.ru_utime
41-
stime = self._end_rusage.ru_stime - self._start_rusage.ru_stime
42-
return 'CPU: %0.2fms (%0.2fms)' % ((utime + stime) * 1000.0, self.total_time)
33+
if self.timer.has_resource:
34+
utime = self.timer._end_rusage.ru_utime - self.timer._start_rusage.ru_utime
35+
stime = self.timer._end_rusage.ru_stime - self.timer._start_rusage.ru_stime
36+
return 'CPU: %0.2fms (%0.2fms)' % ((utime + stime) * 1000.0, self.timer.total_time)
4337
else:
44-
return 'TOTAL: %0.2fms' % (self.total_time)
38+
return 'TOTAL: %0.2fms' % (self.timer.total_time)
4539

4640
def title(self):
4741
return _('Resource Usage')
4842

4943
def url(self):
5044
return ''
5145

52-
def _elapsed_ru(self, name):
53-
return getattr(self._end_rusage, name) - getattr(self._start_rusage, name)
54-
5546
def content(self):
5647

57-
utime = 1000 * self._elapsed_ru('ru_utime')
58-
stime = 1000 * self._elapsed_ru('ru_stime')
59-
vcsw = self._elapsed_ru('ru_nvcsw')
60-
ivcsw = self._elapsed_ru('ru_nivcsw')
61-
minflt = self._elapsed_ru('ru_minflt')
62-
majflt = self._elapsed_ru('ru_majflt')
48+
utime = 1000 * self.timer.elapsed_ru('ru_utime')
49+
stime = 1000 * self.timer.elapsed_ru('ru_stime')
50+
vcsw = self.timer.elapsed_ru('ru_nvcsw')
51+
ivcsw = self.timer.elapsed_ru('ru_nivcsw')
52+
minflt = self.timer.elapsed_ru('ru_minflt')
53+
majflt = self.timer.elapsed_ru('ru_majflt')
6354

6455
# these are documented as not meaningful under Linux. If you're running BSD
6556
# feel free to enable them, and add any others that I hadn't gotten to before
@@ -78,7 +69,7 @@ def content(self):
7869
(_('User CPU time'), '%0.3f msec' % utime),
7970
(_('System CPU time'), '%0.3f msec' % stime),
8071
(_('Total CPU time'), '%0.3f msec' % (utime + stime)),
81-
(_('Elapsed time'), '%0.3f msec' % self.total_time),
72+
(_('Elapsed time'), '%0.3f msec' % self.timer.total_time),
8273
(_('Context switches'), '%d voluntary, %d involuntary' % (vcsw, ivcsw)),
8374
# ('Memory use', '%d max RSS, %d shared, %d unshared' % (rss, srss, urss + usrss)),
8475
# ('Page faults', '%d no i/o, %d requiring i/o' % (minflt, majflt)),

0 commit comments

Comments
 (0)