【进程 04】全局变量在进程中的使用问题

# 子进程中的变量也互不影响

# 在子进程中修改全局变量对父进程中的全局变量没有影响

# 在创建子进程时对全局变量做了一个备份,父进程中的与子进程中的num是完全不同的

 首先,大家要知道,每一个进程中的变量都是互不干扰的

from multiprocessing import Process

import time

# 设置全局变量
num = 100


def run():
    print('子进程开始')
    print('子进程结束')
    # 全局变量 num
    global num
    # num 的值 增加 1
    num = num + 1
    print(num)


if __name__ == '__main__':
    print('父进程开始')
    p = Process(target=run)
    p.start()
    p.join()
    # 应该增加 1
    print('父进程结束' + str(num))

我们看到这里父进程使用的 num 的值并没有增加

接着再来做一个测试,如果是两个子进程,那这两个子进程之间会互相影响吗?

from multiprocessing import Process
from time import sleep

num = 100


def run():
    print('子进程开始')
    print('子进程结束')
    global num
    num = num + 1
    print(num)


if __name__ == '__main__':
    print('父进程开始')

    # 创建两个子进程
    p = Process(target=run)
    p.start()
    p.join()

    p1 = Process(target=run)
    p1.start()
    p1.join()

    print('父进程结束' + str(num))

代码示例图:

发现子进程之间也互不影响

最后我们得出一个结论

# 子进程中的变量也互不影响

# 在子进程中修改全局变量对父进程中的全局变量没有影响

# 在创建子进程时对全局变量做了一个备份,父进程中的与子进程中的num是完全不同的

发布了96 篇原创文章 · 获赞 103 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_38114487/article/details/105268810