04-进程参数、全局变量问题

目标

  • 知道多进程之间不能共享全局变量

  • 能够给子进程指定的函数传递参数

1. 子进程参数传递

给子进程传递参数方法和给子线程传递参数方法基本一致!

image-20180702231817250

2. 进程间不共享全局变量

import multiprocessing
# 定义全局变量
num = 100


# 定义work方法,设置num1的值
def work():
    global num       # 在函数内部声明使用全局变量num
    num = num + 1    # 对num值进行+1
    print("work num = %d" % num)


# 定义work2方法,获取num1的值
def work2():
    print("work2 num = %d" % num)


if __name__ == '__main__':

    # 创建子进程
    process1 = multiprocessing.Process(group=None, target=work, name="MyProcess")
    process1.start()

    # 创建第二个子进程
    process2 = multiprocessing.Process(group=None, target=work2, name="MyProcess2")
    process2.start()

运行结果:

work num = 101
work2 num = 100

由运行结果可以看出,work函数对num1的修改,在work2中并没有获取到,而还是原来的100,所以,进程之间是不能够共享变量的

image-20180615094336157