class InterProcessLock(object):
def lock(self, delta=0.01):
while True:
try:
self.lockNoWait()
break;
except:
time.sleep(delta)
def __init__(self, name=None):
self.mutex = None
if not name:
name = sys.argv[0]
self.name = base64.b64encode(name).replace('=','')
def lockNoWait(self):
self.mutex = win32event.CreateMutex(None, 0, self.name)
if win32api.GetLastError() == winerror.ERROR_ALREADY_EXISTS:
self.mutex.Close()
self.mutex = None
raise Exception('acquired')
def unlock(self):
self.mutex.Close()
lock.lock()
bebebe()
lock.unlock()
Нужно сделать многопроцессную крит. секцию.
ЭТО работает в 90% случаем, в 10 процентах же говорит:
error in thread: ‘NoneType’ object has no attribute ‘Close’