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时,又各自产生新的进程

如图所示:

多次fork

源码下载

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

扫码关注云+社区