X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=pdm%2Fperf.py;h=7a16ab3f372b65d643f8125cc0a0e50fb61966d9;hb=11d50d09baf13d705e78090ca591d4cef38f4942;hp=30f60ba95409fee5232fa50ff4235c778b3feee6;hpb=7f97a47e579701c8e033ad73259434777f70ef3e;p=pdm.git diff --git a/pdm/perf.py b/pdm/perf.py index 30f60ba..7a16ab3 100644 --- a/pdm/perf.py +++ b/pdm/perf.py @@ -1,4 +1,4 @@ -import os, sys, resource, time, socket +import os, sys, resource, time, socket, threading class attrinfo(object): def __init__(self, desc = None): @@ -86,7 +86,7 @@ class staticdir(perfobj): 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] @@ -94,6 +94,40 @@ class staticdir(perfobj): def pdm_protocols(self): return super(staticdir, self).pdm_protocols() + ["dir"] +class event(object): + def __init__(self): + self.time = time.time() + +idlock = threading.Lock() +procevid = 0 + +def getprocid(): + global procevid + idlock.acquire() + try: + ret = procevid + procevid += 1 + return ret + finally: + idlock.release() + +class procevent(event): + def __init__(self, id): + super(procevent, self).__init__() + if isinstance(id, procevent): + self.id = id.id + else: + self.id = id + +class startevent(procevent): + def __init__(self): + super(startevent, self).__init__(getprocid()) + +class finishevent(procevent): + def __init__(self, start, aborted): + super(finishevent, self).__init__(start) + self.aborted = aborted + sysres = staticdir() itime = time.time() ires = resource.getrusage(resource.RUSAGE_SELF)