线程之间可共享全局变量
如果有修改,全看执行顺序。
多线程开发的时候共享全局变量会带来资源竞争效果。也就是数据不安全。
比如:
x=1
def t1(num):
global x
for i in range(num):
x+=1
print('t1..',x)
def t2(num):
global x
for i in range(num):
x+=1
print('t2',x)
def m():
tt1=threading.Thread(target=t1,args=(1000000,))
tt2=threading.Thread(target=t2,args=(1000000,))
tt1.start()
# time.sleep(1)
tt2.start()
if __name__ == '__main__':
m()
输出结果是:
>>>t1.. 1306304
>>>t2 1401359
原因是,Python底层的+=算法分为三步,当取得的全局变量已经计算,但还没赋值过去时,CPU切换到另