前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python的多进程与多fork

python的多进程与多fork

作者头像
章鱼喵
发布2018-06-27 15:22:51
1.8K0
发布2018-06-27 15:22:51
举报
文章被收录于专栏:codingcoding

多进程

多个进程分别修改程序中的全局变量,结果会是怎样的? 如:全局变量num初始值为0,多个进程分别对该变量进行加1,是否会产生叠加效果?

代码语言:javascript
复制
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个?

用以下程序证明:

代码语言:javascript
复制
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

源码下载

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.12.02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 多进程
  • 多次fork
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档