mirror of
https://github.com/python/cpython.git
synced 2025-09-27 02:39:58 +00:00
Patch #645894: Use getrusage for computing the time consumption in
profile.py if available.
This commit is contained in:
parent
7fe60c0a0a
commit
a4dac4094a
2 changed files with 23 additions and 2 deletions
|
@ -107,6 +107,20 @@ if hasattr(os, "times"):
|
||||||
t = timer()
|
t = timer()
|
||||||
return t[0] + t[1]
|
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:
|
class Profile:
|
||||||
"""Profiler class.
|
"""Profiler class.
|
||||||
|
@ -159,8 +173,12 @@ class Profile:
|
||||||
bias = self.bias
|
bias = self.bias
|
||||||
self.bias = bias # Materialize in local dict for lookup speed.
|
self.bias = bias # Materialize in local dict for lookup speed.
|
||||||
|
|
||||||
if timer is None:
|
if not timer:
|
||||||
if os.name == 'mac':
|
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.timer = MacOS.GetTicks
|
||||||
self.dispatcher = self.trace_dispatch_mac
|
self.dispatcher = self.trace_dispatch_mac
|
||||||
self.get_time = _get_time_mac
|
self.get_time = _get_time_mac
|
||||||
|
|
|
@ -64,6 +64,9 @@ Extension Modules
|
||||||
Library
|
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 #1046831: Use get_python_version where appropriate in sysconfig.py.
|
||||||
|
|
||||||
- Patch #1117454: Remove code to special-case cookies without values
|
- Patch #1117454: Remove code to special-case cookies without values
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue