多线程共享全局变量(线程间通信)

修改全局变量一定需要加global吗?

num = 100
lis = [11,22]

def demo():
    global num
    num += 100

def demo1():
    lis.append(33)   # 未修改指向 只是修改了指向空间的数据 不用加global

def demo2():
    global lis
    lis = lis + [44]    # 修改了指向 要加上global

print(num) # 100
demo()
print(num)  # 200
# demo1()
demo2()
print(lis)    # [11, 22, 44]

多线程共享全局变量


def demo1():
    global num
    num += 1
    print("demo1---%d" % num)

def demo2():
    print("demo2---%d" % num)


def main():
    t1 = threading.Thread(target=demo1)
    t2 = threading.Thread(target=demo2)
    t1.start()
    time.sleep(1)

    t2.start()
    time.sleep(1)

    print("main----%d" % num)


if __name__ == '__main__':
    main()

执行结果:101
在这里插入图片描述
多线程参数

import threading
import time


num = [11,22]

def demo1(num):
    num.append(33)
    print("demo1---%s" % str(num))


def demo2(num):
    print("demo2---%s" % str(num))


def main():
    t1 = threading.Thread(target=demo1,args=(num,))
    t2 = threading.Thread(target=demo2,args=(num,))
    t1.start()
    time.sleep(1)

    t2.start()
    time.sleep(1)

    print("main----%s" % str(num))


if __name__ == '__main__':
    main()

在这里插入图片描述

发布了106 篇原创文章 · 获赞 0 · 访问量 2377

猜你喜欢

转载自blog.csdn.net/weixin_45905671/article/details/105337765