您的位置:首页 > 编程语言 > Python开发

python 多线程共享全局变量的问题

2020-02-12 12:05 253 查看

  多线程都是在同一个进程中运行的。因此在进程中的全局变量所有线程都是可共享的。

  这就造成了一个问题,因为线程执行的顺序是无序的。有可能会造成数据错误。

直白理解:也就是多线程执行的时候,同时对一个全局变量进行操作(例如同时进行赋值操作,并且赋值还不同),就可能出现数据错误.

 

import threading

VALUE = 0

def add_value():
global VALUE  # 全局变量在函数体中使用的时候,需要申明
for x in range(1000):
VALUE += 1
print('value: %d' % VALUE)

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

if __name__ == '__main__':
main()

 

两个线程都是对全局变量VALUE进行加1运算,在同一进程中两个线程进行的VALUE加1运算同时执行时就会出错.

在上面程序中VALUE加1执行的次数较少时,出现同时执行的情况一般不会出现,但是,当执行次数较多时(1000000次),

就会出现同时进行VALUE加1运算,从而造成全局变量VALUE数据出错.

 

转载于:https://www.cnblogs.com/S-Evildoer/p/10702166.html

  • 点赞
  • 收藏
  • 分享
  • 文章举报
diaochaosen7367 发布了0 篇原创文章 · 获赞 0 · 访问量 100 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: