多线程详解学习及分析(三)——多线程里面的全局变量

本文介绍了如何在Python的多线程环境中使用全局变量。通过示例代码展示了未使用全局变量时,需通过线程参数传递变量,而使用全局变量则可以直接在不同线程间共享,但未涉及线程安全问题。全局变量在多线程中的应用需要注意并发访问时的数据一致性。
摘要由CSDN通过智能技术生成

全局变量在多线程中的应用

全局变量声明方法:

# 全局变量声明
    global_变量名    # _代表空格
# 示例
    global number

未使用全局变量:

        需要通过线程传入实参

import threading

def run1(number):
    print(f"run1传入的变量是{number}")

def run2(number):
    print(f"run2传入的变量是{number}")

if __name__ == '__main__':
    number = 10
    t1 = threading.Thread(target=run1,args=(number,))   # 需要变量传递
    t1.start()
    t2 = threading.Thread(target=run2,args=(number,))   # 需要变量传递
    t2.start()

执行结果:

run1传入的变量是10
run2传入的变量是10

使用全局变量:

import threading

def run1(number):
    global number2
    print(f"run1传入的变量是{number}\n")
    print(f"{number2+20},run1中调用的全局变量\n")

def run2(number):
    global number2
    print(f"run2传入的变量是{number}\n")
    print(f"{number2+20},run2中调用的全局变量\n")
if __name__ == '__main__':
    number1 = 10
    number2 = 20
    t1 = threading.Thread(target=run1,args=(number1,))   # 只传入number1
    t1.start()
    t2 = threading.Thread(target=run2,args=(number1,))   # 只传入number1
    t2.start()

执行结果(为了增加代码可读性,我们增加了换行符):

        在不传入实参的情况下,通过全局变量也可以直接调用参数。并且通过对比,我们还能发现

多次调用全局变量,并没有改变全局变量本身的值

# run1传入的变量是10
# 40,run1中调用的全局变量
# run2传入的变量是10
# 40,run2中调用的全局变量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值