classes to implement some standard PERF objects that can be used by
PERF clients connecting to any PERF server.
-See the documentation for pdm.srv.perf for a description of the
+See the documentation for L{pdm.srv.perf} for a description of the
various PERF interfaces.
It contains two named PERF objects:
- * sysres -- A directory containing the following objects pertaining
- to the resource usage of the server process:
- * realtime -- An attribute returning the amount of real time
- since the PDM module was imported (which likely
- coincides with the amount of time the server process
- has been running).
- * cputime -- An attribute returning the amount of CPU time
- consumed by the server process (in both user and
- kernel mode).
- * utime -- An attribute returning the amount of CPU time the
- server process has spent in user mode.
- * stime -- An attribute returning the amount of CPU time the
- server process has spent in kernel mode.
- * maxrss -- An attribute returning the largest resident set size
- the server process has used during its lifetime.
- * rusage -- An attribute returning the current rusage of the
- server process.
-* sysinfo -- A directory containing the following objects pertaining
- to the environment of the server process:
- * pid -- An attribute returning the PID of the server process.
- * uname -- An attribute returning the uname information of the
- system.
- * hostname -- An attribute returning the hostname of the system.
- * platform -- An attribute returning the Python build platform.
+ - sysres -- A directory containing the following objects pertaining
+ to the resource usage of the server process:
+
+ - realtime -- An attribute returning the amount of real time since
+ the PDM module was imported (which likely coincides with the
+ amount of time the server process has been running).
+
+ - cputime -- An attribute returning the amount of CPU time
+ consumed by the server process (in both user and kernel mode).
+
+ - utime -- An attribute returning the amount of CPU time the
+ server process has spent in user mode.
+
+ - stime -- An attribute returning the amount of CPU time the
+ server process has spent in kernel mode.
+
+ - maxrss -- An attribute returning the largest resident set size
+ the server process has used during its lifetime.
+
+ - rusage -- An attribute returning the current rusage of the
+ server process.
+
+ - sysinfo -- A directory containing the following objects pertaining
+ to the environment of the server process:
+
+ - pid -- An attribute returning the PID of the server process.
+
+ - uname -- An attribute returning the uname information of the
+ system.
+
+ - hostname -- An attribute returning the hostname of the system.
+
+ - platform -- An attribute returning the Python build platform.
"""
import os, sys, resource, time, socket, threading
class attrinfo(object):
"""The return value of the `attrinfo' method on `attr' objects as
- described in pdm.srv.perf.
+ described in L{pdm.srv.perf}.
Currently contains a single data field, `desc', which should have
a human-readable description of the purpose of the attribute.
class perfobj(object):
def __init__(self, *args, **kwargs):
- super(perfobj, self).__init__()
+ super().__init__()
def pdm_protocols(self):
return []
read.
"""
def __init__(self, func, info = None, *args, **kwargs):
- super(simpleattr, self).__init__(*args, **kwargs)
+ super().__init__(*args, **kwargs)
self.func = func
if info is None:
info = attrinfo()
return self.info
def pdm_protocols(self):
- return super(simpleattr, self).pdm_protocols() + ["attr"]
+ return super().pdm_protocols() + ["attr"]
class valueattr(perfobj):
"""An implementation of the `attr' interface, which is initialized
updates to the value are reflected in subsequent reads.
"""
def __init__(self, init, info = None, *args, **kwargs):
- super(valueattr, self).__init__(*args, **kwargs)
+ super().__init__(*args, **kwargs)
self.value = init
if info is None:
info = attrinfo()
return self.info
def pdm_protocols(self):
- return super(valueattr, self).pdm_protocols() + ["attr"]
+ return super().pdm_protocols() + ["attr"]
class eventobj(perfobj):
"""An implementation of the `event' interface. It keeps track of
subscribers when submitted with the `notify' method.
"""
def __init__(self, *args, **kwargs):
- super(eventobj, self).__init__(*args, **kwargs)
+ super().__init__(*args, **kwargs)
self.subscribers = set()
def subscribe(self, cb):
except: pass
def pdm_protocols(self):
- return super(eventobj, self).pdm_protocols() + ["event"]
+ return super().pdm_protocols() + ["event"]
class staticdir(perfobj):
"""An implementation of the `dir' interface. Put other PERF
return them to requesting clients.
"""
def __init__(self, *args, **kwargs):
- super(staticdir, self).__init__(*args, **kwargs)
+ super().__init__(*args, **kwargs)
self.map = {}
def __setitem__(self, name, ob):
return self.map.get(name, default)
def listdir(self):
- return self.map.keys()
+ return list(self.map.keys())
def lookup(self, name):
return self.map[name]
def pdm_protocols(self):
- return super(staticdir, self).pdm_protocols() + ["dir"]
+ return super().pdm_protocols() + ["dir"]
class event(object):
"""This class should be subclassed by all event objects sent via
`finishevent' emitted when the connection is closed.
"""
def __init__(self, id):
- super(procevent, self).__init__()
+ super().__init__()
if isinstance(id, procevent):
self.id = id.id
else:
class startevent(procevent):
"""A subclass of `procevent'. See its documentation for details."""
def __init__(self):
- super(startevent, self).__init__(getprocid())
+ super().__init__(getprocid())
class finishevent(procevent):
"""A subclass of `procevent'. Intended to be emitted when a
distinction is meaningful. The `start' parameter should be the
`startevent' instance used when the process was initiated."""
def __init__(self, start, aborted = False):
- super(finishevent, self).__init__(start)
+ super().__init__(start)
self.aborted = aborted
sysres = staticdir()