J'ai le code qui ressemble à quelque chose comme ceci:python: une façon élégante de gérer le verrouillage d'une 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
c'est un peu laid, cependant. beaucoup d'acquisitions et de communiqués. cela ressemble plus jolie:
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
mais cela maintient le blocage plus que le strict nécessaire, espcially si self.logger.error
prend un certain temps (comme si elle écrit sur le disque, ce qu'il fait). Y a-t-il un juste milieu entre le maintien de la serrure aussi peu que possible, mais ayant un code plus joli?
heh clever =) j'aime ça – Claudiu
Vous pourriez même facilement casser les 4 premières lignes dans une autre fonction. – user37078