[英]Locking mechanism as global / class scope with multithreading in Python
將鎖機制和變量用作全局變量(在類范圍外)或類變量(在問題中聲明)之間有什么區別? 如:
class httpHandler(BaseHTTPRequestHandler):
success = 0
fails = 0
statsLock = threading.Lock()
def do_POST(self):
...
httpHandler.statsLock.acquire()
httpHandler.success += 1
self.statsLock.release()
return
要么:
success = 0
fails = 0
statsLock = threading.Lock()
class httpHandler(BaseHTTPRequestHandler):
def do_POST(self):
...
statsLock.acquire()
success += 1
statsLock.release()
return
這兩個示例在功能上是相同的,但是在第二個示例中,您應該使用變量的“全局”定義,因為您成功修改了全局變量,並且沒有全局變量,將創建變量的本地副本(請參閱this或python全局文檔 )。
def do_POST(self):
...
global success, fails, statsLock
statsLock.acquire()
success += 1 # THIS DOES NOT WORK WITHOUT GLOBAL
statsLock.release()
return
無論如何,我認為:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.