python的多进程与多fork

多进程

多个进程分别修改程序中的全局变量,结果会是怎样的?
如:全局变量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时,又各自产生新的进程

如图所示:

《python的多进程与多fork》 多次fork

源码下载

    原文作者:塞亚猫
    原文地址: https://www.jianshu.com/p/80799e6af92a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞