Patch #645894: Use getrusage for computing the time consumption in

profile.py if available.
This commit is contained in:
Martin v. Löwis 2005-03-03 11:39:45 +00:00
parent 7fe60c0a0a
commit a4dac4094a
2 changed files with 23 additions and 2 deletions

View File

@ -107,6 +107,20 @@ if hasattr(os, "times"):
t = timer()
return t[0] + t[1]
# Using getrusage(3) is better than clock(3) if available:
# on some systems (e.g. FreeBSD), getrusage has a higher resolution
# Furthermore, on a POSIX system, returns microseconds, which
# wrap around after 36min.
_has_res = 0
try:
import resource
resgetrusage = lambda: resource.getrusage(resource.RUSAGE_SELF)
def _get_time_resource(timer=resgetrusage):
t = timer()
return t[0] + t[1]
_has_res = 1
except ImportError:
pass
class Profile:
"""Profiler class.
@ -159,8 +173,12 @@ class Profile:
bias = self.bias
self.bias = bias # Materialize in local dict for lookup speed.
if timer is None:
if os.name == 'mac':
if not timer:
if _has_res:
self.timer = resgetrusage
self.dispatcher = self.trace_dispatch
self.get_time = _get_time_resource
elif os.name == 'mac':
self.timer = MacOS.GetTicks
self.dispatcher = self.trace_dispatch_mac
self.get_time = _get_time_mac

View File

@ -64,6 +64,9 @@ Extension Modules
Library
-------
- Patch #645894: Use getrusage for computing the time consumption in
profile.py if available.
- Patch #1046831: Use get_python_version where appropriate in sysconfig.py.
- Patch #1117454: Remove code to special-case cookies without values