python3: Use higher-resolution CPU timer.
authorFredrik Tolf <fredrik@dolda2000.com>
Fri, 13 May 2016 13:42:20 +0000 (15:42 +0200)
committerFredrik Tolf <fredrik@dolda2000.com>
Fri, 13 May 2016 13:42:20 +0000 (15:42 +0200)
python3/ashd/perf.py

index 3b8f63b..86fe43c 100644 (file)
@@ -4,10 +4,10 @@ try:
 except:
     pdm = None
 try:
-    import resource
-    ru_thread = resource.RUSAGE_THREAD
+    import time
+    clock_thread = time.CLOCK_THREAD_CPUTIME_ID
 except:
-    ru_thread = None
+    clock_thread = None
 
 reqstat = {}
 
@@ -29,18 +29,16 @@ if pdm:
             self.remoteaddr = env.get("REMOTE_ADDR")
             self.remoteport = env.get("REMOTE_PORT")
             self.scheme = env.get("wsgi.url_scheme")
-            if ru_thread is not None:
-                ru = resource.getrusage(ru_thread)
-                self.icpu = ru.ru_utime + ru.ru_stime
+            if clock_thread is not None:
+                self.icpu = time.clock_gettime(clock_thread)
 
     class reqfinish(pdm.perf.finishevent):
         def __init__(self, start, aborted, status):
             super().__init__(start, aborted)
             self.status = status
             self.cputime = 0
-            if ru_thread is not None:
-                ru = resource.getrusage(ru_thread)
-                self.cputime = ru.ru_utime + ru.ru_stime - start.icpu
+            if clock_thread is not None:
+                self.cputime = time.clock_gettime(clock_thread) - start.icpu
 
 class request(object):
     def __init__(self, env):