[Python-checkins] python/dist/src/Lib profile.py,1.61,1.62

loewis at users.sourceforge.net loewis at users.sourceforge.net
Thu Mar 3 12:40:18 CET 2005


Update of /cvsroot/python/python/dist/src/Lib
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16299/Lib
Modified Files:
	profile.py 
Log Message:
Patch #645894: Use getrusage for computing the time consumption in
profile.py if available.
Index: profile.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/profile.py,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -d -r1.61 -r1.62
--- profile.py	10 Jan 2005 16:48:37 -0000	1.61
+++ profile.py	3 Mar 2005 11:39:44 -0000	1.62
@@ -107,6 +107,20 @@
 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 @@
 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


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /