【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种方式】

 

【加群交流】



posted @ 2020-09-02 18:38  AI菌  阅读(279)  评论(0编辑  收藏  举报