多进程
多个进程分别修改程序中的全局变量,结果会是怎样的?
如:全局变量num初始值为0,多个进程分别对该变量进行加1,是否会产生叠加效果?
import os
import time
num = 0
# fork函数在windows不支持
pid = os.fork()
if pid == 0:
num += 1
print("全局变量num=%d" % num)
else:
time.sleep(1)
num += 1
print("全局变量num=%d" % num)
# 全局变量num=1
# 全局变量num=1
从代码执行结果可知:每个进程中所有数据都各自拥有一份,互不影响
多次fork
在一个程序中,调用两次fork函数,会有多少个进程?3个?4个?
用以下程序证明:
import os
import time
pid = os.fork()
if pid == 0:
print(1)
else:
print(2)
pid = os.fork()
if pid == 0:
print(3)
else:
print(4)
# 2
# 1
# 4
# 4
# 3
# 3
由此可知,fork两次后,共有6个进程
第一次fork后,有两个进程。 这两个进程在第二次fork时,又各自产生新的进程
如图所示: