首页 > 系统相关 >01-多进程的三种创建方式

01-多进程的三种创建方式

时间:2023-12-08 15:44:06浏览次数:41  
标签:fork 01 变量 启动 创建 三种 进程 服务器 ID

下面是python多进程官网文档的翻译

我们先说 fork 启动方式。

原文的意思可能比较难以理解,我翻译一下。fork方式启动一个子进程,子进程里面的所有资源都是从主进程拷贝了一份,然后子进程执行具体的函数的时候,就会直接使用原主进程有的资源,比如说一些变量。

【1】子进程可以使用在子进程启动之前已经加载进内存的变量
【2】子进程无法使用子进程启动之后加载的变量
【3】子进程的父进程ID和主进程的ID一样
【4】子进程和父进程的模块名一样,都是__main__, 因为这个是子进程继承自父进程的变量数据
【5】父进程的父进程ID是 python解释器的进程ID

一般说来,fork 启动方式是最快的,因为他所需的所有数据都是内存拷贝,但是很明显,某些情况下,他是最消耗内存的,比如有个项目已经运行了很久了,有很多对象,但是他们不是 子进程计算中的必须对象,会造成一定的内存占用。另外就是 fork 模式下是不安全的,比如子进程会用到某个父进程中定义的变量或者对象,后来在真正使用的时候可能已经被修改了。

再说 spawn, 他的解释很容易搞懂,我们写个代码看一下。

【1】子进程的父进程ID就是主进程的ID
【2】子进程的模块名和主进程的模块名不一样
【3】子进程无法使用父进程的变量

这个启动方式最大的缺点就是慢,他要用到的一些包,在进程启动之时都要再加载一遍,这是IO操作,非常耗时。

最后说一下 forkserver 模式

forkserver 模式是 fork 模式和 spawn 模式的结合体,主进程会先新启一个服务器进程,这个服务器进程再去以 fork 的方式启动一个新的进程,主进程负责与服务器进程打交道,服务器进程完成进程管理。

【1】主进程并不是子进程的父进程
【2】两个子进程的父进程是同一个
【3】子进程并不能使用主进程的变量
【4】子进程的模块名已经发生了变化

所以 forkserver 启动方式是一种中和的。假如说该方式只启动了一个进程,那他和 spawn 是没有区别的,他也需要重新加载包,但是后续进程多了之后,他每次都直接从 进程服务器中拷贝就完事了,速度就跟上来了。主进程启动进程服务器的时候不能传递主进程的变量,也就保证了进程安全。

标签:fork,01,变量,启动,创建,三种,进程,服务器,ID
From: https://www.cnblogs.com/yaowy001/p/17888293.html

相关文章

  • opencv4.8+vs2019 运行出现一堆[INFO:XXX]信息
    前言Opencv+vs2019搭建成功运行后出现一堆INFO信息,虽说不影响程序运行但是会占据控制台窗口,覆盖正常调试输出出现时机:在每次需要显示图像时均会出现,如:namedWindow、imshow函数调用时。 一、现象分析这些不是错,是OpenCV在启动时加载GUI(图形用户界面)后端注册表的信息,显示的是......
  • 当创建statefulset资源后,k8s组件如何协作
    本文分享自华为云社区《当创建StatefulSet后,k8s会发生什么?》,作者:可以交个朋友。一、StatefulSet介绍StatefulSet是用来管理有状态应用的工作负载对象,StatefulSet管理基于相同容器规约的一组Pod,使用持久标识符为工作负载Pod提供持久存储。和Deployment类似,也属于副本控制器,......
  • MBR30100CT-ASEMI肖特基二极管MBR30100CT
    编辑:llMBR30100CT-ASEMI肖特基二极管MBR30100CT型号:MBR30100CT品牌:ASEMI封装:TO-220特性:插件、肖特基二极管正向电流:30A反向耐压:100V恢复时间:5ns引脚数量:3芯片个数:2正向压降:0.54V~0.92V芯片尺寸:122MIL浪涌电流:275A漏电流:10ua工作温度:-65℃~175℃包装方式:500/盘;5000......
  • xcat批量创建和部署vmware esxi虚机(仅测试esxi)
    安装参考xcatdocker部署使用,已添加esxi支持https://www.cnblogs.com/leaus/p/17884674.html编辑hosts表添加ip和主机名对应vi/etc/hosts192.168.1.101node01192.168.1.102node02添加节点,配置创建信息nodeaddnode01groups=nodevm,allnodeaddnode02groups=nodevm......
  • SQLBI_精通DAX课程笔记_01_DAX介绍
    一:函数式语言DAX是一个函数式语言,应用于Analysis Services , PowerPivot , 和Power Bi 。二:共同与不同2.1 共同点DAX与PowerPivot for Excel 一起诞生,DAX生来就是Excel系统的一部分,因此,Dax有一部分表达式的语义表达和EXCEL有很多的共同之处,如部分函数的名称和语义......
  • 使用js和定位排版创建内联广告
    HTML+JS<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><linkrel="stylesheet"href="../css/index.css"><title>使用js和定位排版创建内联广告</title></head&g......
  • 0x01 Linux Fundamentals Part 2
    Task1、引言参数介绍复制文件和移动文件介绍文件和文件夹安全的访问机制以及如何识别当前用户对文件的访问权运行脚本和执行文件Task2、利用SSH接入远程主机什么是SSH及其工作原理?SSH只是一种加密形式的设备之间的协议。通过网络传输的数据都会被加密,形式如下图: st......
  • P5314 [Ynoi2011] ODT
    好题,牛牛的一个套路。先树剖一下,我们可以很简单的用树状数组维护每个点的真实值。对于每个点只维护所有轻儿子的信息,对于每次询问的时候暴力加入当前点,重儿子以及父亲的信息,查询第\(k\)大,再删除信息即可。考虑链修改的影响。因为只维护的是轻儿子的信息,那么只有链上的所有轻......
  • P1084 [NOIP2012 提高组] 疫情控制
    题意:H国有$n$个城市,这\(n\)个城市用$n-1$条双向道路相互连通构成一棵树,$1$号城市是首都,也是树中的根节点。H国的首都爆发了一种危害性极高的传染病。当局为了控制疫情,不让疫情扩散到边境城市(叶子节点所表示的城市),决定动用军队在一些城市建立检查点,使得从首都到边境......
  • Luogu-P4654-[CEOI2017] Mousetrap
    前言模拟赛之后被胁迫上去讲这题,没怎么准备,然后就在几个省的OIer面前当小丑。。倒是把我自己讲得很明白,但感觉对其他人不是很负责任,就来赎罪一下。。更好的阅读体验。题意题目链接。分析以\(t\)为根,我们的目的是让老鼠走到根的操作数最小。观察老鼠的动向,显然老鼠......