python 自学,高阶进程

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()


'''结论:进程之间不共享全局变量'''

你可能感兴趣的:(python)