Ich habe Code, der wie so etwas wie folgt aussieht:Python: elegante Möglichkeit, mit Sperre für eine Variable umzugehen?
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
es ist irgendwie hässlich, though. viele Erwerbungen und Freisetzungen. das sieht schöner:
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
aber das hält die Sperre länger als unbedingt nötig, espcially wenn self.logger.error
eine Weile dauert, (wie wenn er schreibt auf der Festplatte, die es tut). Gibt es irgendeinen Mittelweg zwischen dem Halten des Schlosses so wenig wie möglich, aber schönerem Code?
heh clever =) ich mag es – Claudiu
Sie könnten sogar die ersten 4 Zeilen in eine andere Funktion leicht brechen. – user37078