python的多进程与多fork

作者: 闲睡猫 | 来源:发表于2017-12-02 18:03 被阅读46次

多进程

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

源码下载

相关文章

  • python的多进程与多fork

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

  • Python多进程

    Python多进程 Python中进程创建方式有两种: fork:使用Python提供的os模块。 Python在...

  • 多进程

    fork Python的os模块封装了常见的系统调用,其中就包括fork,可以在Python程序中轻松创建子进程:...

  • 1.5.1 Python进程使用 -- fork

    1.进程的创建-fork Python的os模块封装了常见的系统调用,其中就包括fork,可以在Python程序中...

  • 多进程笔记:

    ### 在Python中多进程的创建方式对比: 1. 在Python中,可以通过`os.fork()`创建子进程,...

  • 第六章-开发运维的常见问题

    目录 fork操作 进程外开销 AOF追加阻塞 单机多实例部署 一. fork操作 当执行一个bgsave或bgr...

  • 05-学会几个系统调用:咱们公司能接哪些类型的项目?

    立项服务与进程管理 创建进程的系统调用叫作 fork。在 Linux 里,当父进程调用 fork 创建进程的时候,...

  • python 多进程 多线程 协程

    一、多进程 1、子进程(subprocess包) 在python中,通过subprocess包,fork一个子进程...

  • 系统编程--进程函数

    一、fork() 拷贝父进程,子进程的fork不执行,返回0,执行fork之后的所有代码父进程的fork返回子进程...

  • Python -- 进程、线程

    多进程 由于Windows没有fork调用,难道在Windows上无法用Python编写多进程的程序?multip...

网友评论

    本文标题:python的多进程与多fork

    本文链接:https://www.haomeiwen.com/subject/lkanbxtx.html