[英]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.