Python 中多个线程之间是共享全局变量的

本文探讨了Python中多线程如何共享全局变量。通过实例展示,即使不使用`global`关键字,线程仍能修改全局变量,证明其共享特性。同时,将变量作为参数传递到线程中也验证了数据共享。然而,这种共享可能导致线程不安全的问题,需要注意并发访问时的数据一致性问题。
摘要由CSDN通过智能技术生成

一、多线程共享全局变量

首先我们来回忆下在函数中修改全局变量的情况。

在一个函数中,对全局变量进行修改的时候,到底是否需要使用 global 进行说明,要看是否对全局变量的执行指向进行了修改。

如果修改了执行指向,即让全局变量指向了一个新的地方,那么必须使用 global。

如果仅仅是修改了指向的空间中的数据,此时不是必须要使用 global。

我们来看一个例子,在这个例子中,让一个子线程对全局变量 +1 操作,另一个子线程只打印全局变量,看看数据是否共享。


from threading import Thread
import time

g_num = 100

def work1():
    global g_num
    g_num += 1
    print("----in work1, g_num is %d---" % g_num)

def work2():
    print</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值