# 子进程中的变量也互不影响
# 在子进程中修改全局变量对父进程中的全局变量没有影响
# 在创建子进程时对全局变量做了一个备份,父进程中的与子进程中的num是完全不同的
首先,大家要知道,每一个进程中的变量都是互不干扰的
from multiprocessing import Process
import time
# 设置全局变量
num = 100
def run():
print('子进程开始')
print('子进程结束')
# 全局变量 num
global num
# num 的值 增加 1
num = num + 1
print(num)
if __name__ == '__main__':
print('父进程开始')
p = Process(target=run)
p.start()
p.join()
# 应该增加 1
print('父进程结束' + str(num))
我们看到这里父进程使用的 num 的值并没有增加
接着再来做一个测试,如果是两个子进程,那这两个子进程之间会互相影响吗?
from multiprocessing import Process
from time import sleep
num = 100
def run():
print('子进程开始')
print('子进程结束')
global num
num = num + 1
print(num)
if __name__ == '__main__':
print('父进程开始')
# 创建两个子进程
p = Process(target=run)
p.start()
p.join()
p1 = Process(target=run)
p1.start()
p1.join()
print('父进程结束' + str(num))
代码示例图:
发现子进程之间也互不影响
最后我们得出一个结论
# 子进程中的变量也互不影响
# 在子进程中修改全局变量对父进程中的全局变量没有影响
# 在创建子进程时对全局变量做了一个备份,父进程中的与子进程中的num是完全不同的