que tienen código que se parece a algo como esto:python: ¿una forma elegante de lidiar con el bloqueo de una variable?
def startSearching(self):
self.searchingLock.acquire()
searching = self.searching
if self.searching:
self.searchingLock.release()
self.logger.error("Already searching!")
return False
self.searching = True
self.searchingLock.release()
#some more init code, then start the thread which
#constantly checks self.searching to determine when to stop
que es un poco feo, sin embargo. muchas adquisiciones y lanzamientos. esto se ve más bonita:
def startSearching(self):
with self.searchingLock:
if self.searching:
self.logger.error("Already searching!")
return False
self.searching = True
#some more init code, then start the thread which
#constantly checks self.searching to determine when to stop
pero esto mantiene el bloqueo más largo de lo estrictamente necesario, especiamente si self.logger.error
toma un tiempo (como si se escribe en el disco, lo que lo hace). ¿Hay algún punto medio entre mantener el bloqueo lo menos posible pero tener un código más bonito?
heh clever =) me gusta – Claudiu
Incluso podría romper fácilmente las primeras 4 líneas en otra función. – user37078