• 【Python高级编程004 ● 多任务编程 ● 进程之间不共享全局变量】



    ---------Python基础编程---------

    Author : AI菌


    【内容讲解】

    进程之间不共享全局变量:
        创建子进程会对主进程资源进行拷贝,也就是说子进程是主进程的一个副本,好比是一对双胞胎。
        之所以进程之间不共享全局变量,是因为操作的不是同一个进程里面的全局变量,
        只不过不同进程里面的全局变量名字相同而已。

    【代码演示】

    """
    进程之间不共享全局变量:
        创建子进程会对主进程资源进行拷贝,也就是说子进程是主进程的一个副本,好比是一对双胞胎。
        之所以进程之间不共享全局变量,是因为操作的不是同一个进程里面的全局变量,
        只不过不同进程里面的全局变量名字相同而已。
    """
    
    import multiprocessing
    
    # 测试代码
    # result = type([])
    # print(result)
    
    # 定义全局变量
    g_list = list()
    
    
    # 向全局变量添加数据
    def add_data():
        for i in range(3):
            g_list.append(i)
            print("add_data:", i)
        print("添加数据完毕后,add_data_process子进程中全局变量g_list:", g_list)
    
    
    # 读取全局变量的数据
    def read_data():
        print("read_data:", g_list)
    
    
    if __name__ == '__main__':
        # 添加数据进程
        add_data_process = multiprocessing.Process(target=add_data)
        # 读取数据进程
        read_data_process = multiprocessing.Process(target=read_data)
    
        # 启动进程执行对应的任务
        add_data_process.start()
        # 进程等待join, 主进程会等待子进程(add_data_process)执行完成以后,再继续执行下面的代码
        add_data_process.join()
        # 启动进程执行对应的任务
        read_data_process.start()
    
        print("主进程中全局变量g_list:", g_list)

    【运行结果】

    add_data: 0
    add_data: 1
    add_data: 2
    添加数据完毕后,add_data_process子进程中全局变量g_list: [0, 1, 2]
    主进程中全局变量g_list: []
    read_data: []

    【结果说明】

    1、add_data_process子进程中对全局变量g_list添加数据,添加完毕后,
    主进程和read_data_process中的全局变量g_list并没有添加数据,
    说明进程之间不共享全局变量。
    2、主进程、读数据进程和修数据进程, 三个进程分别操作的都是自己进程里面的全局变量my list, 不会对其它进程里面的全局变量产生影响, 所以进程之间不共享全局变量,只不过进程之间的全局变量名字相同而已, 但是操作的不是同一个进程里面的全局变量。

    【往期精彩】

    ▷【Python基础编程196 ● 读取文件的4种方式】
    ▷【Python基础编程197 ● 读取文件的4种方式】
    ▷【Python基础编程198 ● 读取文件的4种方式】
    ▷【Python基础编程199 ● Python怎么读/写很大的文件】
    ▷【Python基础编程200 ● 读取文件的4种方式】
    ▷【Python基础编程201 ● 读取文件的4种方式】
    ▷【Python基础编程202 ● 读取文件的4种方式】
    ▷【Python基础编程203 ● 读取文件的4种方式】

    【加群交流】



  • 相关阅读:
    UVA 11149.Power of Matrix-矩阵快速幂倍增
    51nod 1137.矩阵乘法-矩阵乘法
    HDU 4920.Matrix multiplication-矩阵乘法
    HDU 6237.A Simple Stone Game-欧拉函数找素因子 (2017中国大学生程序设计竞赛-哈尔滨站-重现赛)
    HDU 6235.Permutation (2017中国大学生程序设计竞赛-哈尔滨站-重现赛)
    POJ 2226.Muddy Fields-二分图最大匹配(最小点覆盖)
    POJ 3041.Asteroids-Hungary(匈牙利算法)
    HDU 2063.过山车-Hungary(匈牙利算法)
    Codeforces 832 B. Petya and Exam-字符串匹配
    HDU 6038.Function-数学+思维 (2017 Multi-University Training Contest
  • 原文地址:https://www.cnblogs.com/hezhiyao/p/13603355.html
Copyright © 2020-2023  润新知