Bu gibi bir şeye benzeyen bir kodum var:python: bir değişken üzerinde kilit ile başa çıkmak için zarif bir yol?
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
olsa da çirkin bir şey. bir sürü satın alma ve yayınlama. Bu daha güzel gözüküyor:
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
ancak bu kilit, self.logger.error
bir süre alırsa (özellikle diske yazıyorsa), özellikle gerekli olandan daha uzun süre kilitli kalır. kilidi mümkün olduğunca az tutmakla daha güzel kod arasında bir orta zemin var mı?
heh clever =) Beğenmeyi seviyorum – Claudiu
İlk 4 satırı başka bir işleve kolayca ayırabilirsiniz. – user37078