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 条评论
登录 后参与评论

相关文章

来自专栏肖洒的博客

【MOOC】Python网络爬虫与信息提取

Python网络爬虫与信息提取-北京理工大学-嵩天 发布大学:北京理工大学 发布课程:Python网络爬虫与信息提取 授课老师:嵩天 课程简介:“The web...

932
来自专栏我的技术专栏

Linux编译工具:gcc入门

1334
来自专栏python学习之旅

Python笔记(十三):urllib模块

(一)      URL地址 URL地址组件 URL组件 说明 scheme 网络协议或下载方案 net_loc ...

2906
来自专栏乐沙弥的世界

RAC 环境下的重要参数

    Oracle 数据库启动时会根据参数文件中提供的相关参数启动Oracle实例。这些参数包括数据库名字、sga,pga的分配,控制文件的位置,undo,p...

551
来自专栏三木的博客

Linux shell 程序设计3——命令行程序

1、date:显示、设置系统的日期和时间。 $date 2011年 01月 30日 星期日 14:43:35 CST $date 012309232011 执行...

2006
来自专栏小白课代表

文件搜索利器——Everything

2372
来自专栏Python小屋

详解Python项目开发时自定义模块中对象的导入和使用

背景:1)任何一个Python程序文件既可以直接执行,也可以作为模块导入再使用其中的对象;2)对于大型系统开发,一般不会把所有代码放到单个文件中,而是根据功能将...

3755
来自专栏枕边书

PHP模拟发送POST请求之四、加强file_get_contents()发送POST请求

使用了笨重fsockopen()方法后,我们开始在PHP函数库里寻找更简单的方式来进行POST请求,这时,我们发现了PHP的文件函数也具有与远程URL交互的功能...

1898
来自专栏PPV课数据科学社区

大熊学python3爬虫–scrapy浅探(一)

? 在介绍scrapy之前,我觉得简单介绍下python的class很有必要。 class cainiao: def __init__(self,co...

30710
来自专栏Clive的技术分享

cgi、fastcgi及php-fpm分别是什么cgifastcgiphp-fpm

cgi cgi是通用网关接口定义。当web server收到/index.php这个请求后,会启动对应的CGI程序,这里就是PHP的解析器。接下来PHP解析器会...

2936

扫码关注云+社区