进程间的数据隔离
不同进程之间的数据是隔离的,现在我们来验证一下
from multiprocessing import Process
import time
age = 18
def change_age():
global age
age = 16
if __name__ == '__main__':
p = Process(target=change_age)
p.start()
p.join()
print(age)
上面这段代码定义了一个变量age=18,在change_age函数中将age定义为全局变量,并重新给age赋值16,然后等子进程执行完毕再执行主进程。如果打印出来的age是18,则可以说明,进程间的数据是隔离的。打印结果如下:
思考:为什么global没有生效
其实global生效了,不过它改变的是自己进程的age变量。前面学习创建进程的方法的时候总结过:每开一个进程,操作系统就会在内存里开辟一块空间存放相应的代码包括变量,大概如下图:
如何让不同进程间的数据通信
后面会学习不同进程间数据通信的办法…