24 lines
642 B
Python
24 lines
642 B
Python
import time
|
|
import logging
|
|
|
|
import gevent.lock
|
|
|
|
from Debug import Debug
|
|
|
|
|
|
class DebugLock:
|
|
def __init__(self, log_after=0.01, name="Lock"):
|
|
self.name = name
|
|
self.log_after = log_after
|
|
self.lock = gevent.lock.Semaphore(1)
|
|
self.release = self.lock.release
|
|
|
|
def acquire(self, *args, **kwargs):
|
|
s = time.time()
|
|
res = self.lock.acquire(*args, **kwargs)
|
|
time_taken = time.time() - s
|
|
if time_taken >= self.log_after:
|
|
logging.debug("%s: Waited %.3fs after called by %s" %
|
|
(self.name, time_taken, Debug.formatStack())
|
|
)
|
|
return res
|