进程间不共享全局变量

进程间不共享全局变量

创建一个子进程就是把主进程的资源进行拷贝产生了一个新的进程,主进程和子进程相互独立

示例

import multiprocessing
import time

# 全局变量
my_list = []

# 写入数据
def write_data():
    for i in range(3):
        my_list.append(i)
        print("add: ", i)
    print('write_data', my_list)

# 读取数据
def read_data():
    print('read_data', my_list)

if __name__ == '__main__':
    # 创建写入数据进程
    write_process = multiprocessing.Process(target=write_data)
    # 创建读取数据进程
    read_process = multiprocessing.Process(target=read_data)

    # 启动进程执行相应任务
    write_process.start()
    time.sleep(2)
    read_process.start()

write_data能向全局变量my_list写入数据,但read_data从my_list读出的数据为空。说明存在两份my_list全局变量,并且独立互不影响。

%%{init: {"flowchart": {"htmlLabels": false}} }%%
flowchart TB
	subgraph ide1 ["`__主进程__`"]
		a1("my_list = []")
	end
	subgraph ide2 ["`__写入数据进程__`"]
		a2("my_list = []")
	end
	subgraph ide3 ["`__读取数据进程__`"]
		a3("my_list = []")
	end
	ide1 -- "创建子进程" --> ide2
	ide1 -- "创建子进程" --> ide3