多线程共享全局变量以及锁机制

多线程都是在同一个进程中运行的。因此在进程中的全局变量所有线程都是共享的,这就造成一个问题,因为线程执行的顺序是无序的,有可能会造成数据错误,为了解决这个问题,

threading提供了一个lock类,这个类可以在某个线程访问某个变量时加锁,其他线程此时不能进来,直到当前线程处理完后,把锁释放后,其他想线程才能进来处理。

示例代码如下:

#encoding: utf-8
import threading

VALUE = 0

gLock = threading.Lock()

def add_value():
global VALUE #引用全局变量VALUE
gLock.acquire() #加锁,在全局变量改变运用
for x in range(10000000):
VALUE +=1
gLock.release() #解锁
print('value:%d'%VALUE)

def main():
for x in range(2):
t = threading.Thread(target=add_value())
t.start()

if __name__ == '__main__':
main()
原文地址:https://www.cnblogs.com/cyz123/p/10637548.html