day 22①
多任务编程:进程之间不共享全局变量
小小得区分一个window和linux和mac系统
import multiprocessing
import time
# 对于linux和mac次代码能很好执行,但是window不行,因为window会执行拷贝,无限循环下去
# 对于window来说创建子进程得代码相当于递归:无限制创建子进程,不会停止,所以必须加一句
# 如何解决:通过判断是否是主模块
# 定义全局函数
g_list = list() # =>[]
# 添加函数的任务
def add_data():
for i in range(3):
# 因为列表是可变内存,可以在原有内存的基础上修改数据,并且修改后内存地址不变
# 所以不需要加global关键字
# 加上global 表示声明要修改全局变量的内存地址
g_list.append(i)
print("add:", i)
time.sleep(0.2)
print("添加完成:", g_list)
# 读取数据的任务
def read_data():
print("read:", g_list)
if __name__ == '__main__': # 判断是否为主模块
# 添加数据的子进程
add_process = multiprocessing.Process(target=add_data)
# 读取数据的子进程
read_process = multiprocessing.Process(target=read_data)
# 启动进程执行对应任务
add_process.start()
# 当前进程(主进程)等待添加数据的进程执行完成以后代纳再继续往下进行
add_process.join()
print("main:", g_list)
read_process.start()
'''结论:进程之间不共享全局变量'''