首页 > 系统相关 >python多进程:fork模式和spawn模式

python多进程:fork模式和spawn模式

时间:2023-10-04 19:11:08浏览次数:26  
标签:fork python 创建 模式 复制 线程 进程

python多进程:fork模式和spawn模式

  • fork模式

    1.仅unix系统支持,并且是unix系统的默认模式.
    2.使用该模式创建子进程的时候,会复制父进程的全部变量,支持传参(任意类型)给子进程,但是不会复制父进程的线程.
    3.该模式相当于将父进程的内存复制一份用于创建子进程.但是由于不复制线程的特点,当父进程存在多线程的时候,可能会带来安全问题(复制了线程锁,而没有复制解锁的线程过去,容易触发死锁).同时,由于不管用不用得上的资源都将被复制到子进程,所以可能会带来"膨胀"问题,占用更多的内存.
    4.由于该模式是复制父进程的内存,所以启动方式更快.
    5.该模式可以在任意地方创建子进程.
  • spawn模式

    1.unix,windows,mac都支持,并且是windows和mac的默认启用模式.其中windows只支持该模式.
    2.该模式只能在main方法下开启多进程.
    3.使用该模式创建子进程的时候,会重新生成一份与入口方法相关的变量,所以在父进程中存在,而子进程中未创建的变量,在子进程内是不存在的.可以简单理解为,创建子进程的时候,会重新执行一次main方法之外的代码.
    4.该模式支持传参到子进程,但是不支持传递某些特殊资源到子进程,如:文件对象,文件句柄,线程锁等.这类资源需要子进程自主创建.
    5.这种模式启动更慢,但是可能会更节省内存.搭配共享内存使用可能会更佳.
  • 拓展:forkserver模式

    仅部分unix系统支持,内部使用os.fork创建子进程.
    文档信息不足,不建议使用.

标签:fork,python,创建,模式,复制,线程,进程
From: https://www.cnblogs.com/CJTARRR/p/17742597.html

相关文章

  • 笨办法学Python3 习题17 更多文件操作
    脚本运行内容:系统模块导入参数变量导入os.path模块调用exists函数  解包参数变量(脚本,被复制文件1,粘贴到文件2)打印语句,需要复制文件1内容到文件2打开文件1读取文件1打印语句,中间用到格式化,len(X)函数来运算文件1中字符长度打印语句,中间用到格式化,exists(Y)函数......
  • 流畅的python笔记 (二) 2.序列构成的数组
    内置序列类型分类1:容器序列(能存放不同类型):list,tuple,collections.deque扁平序列(不能存放不同类型):str,bytes,bytearray,memoryview,array.array分类2:可变序列(能被修改):list,bytearray,array.array,collections.deque,memoryview不可变序列:tuple,str,bytes列表推导......
  • python练习2 | 类的继承
    点击查看代码#类继承练习:人力系统#员工分为两类,全职员工FullTimeEmployee、兼职员工PartTimeEmployee#全职和兼职都有”姓名,name,工号:id属性#都具备打印信息print_info(打印姓名、工号)方法#全职有月薪monthly_salary属性#兼职有日薪daily_salary属性,每月工作天数......
  • Python笔记
    第一章、Python概述1.1 扩展库安装方法使用pip命令安装扩展库。在cmd命令行中输入pip,回车后可以看到pip命令的使用说明。1.2 常用的pip命令pip命令示例说明pipfreeze[>requirements.txt]列出已安装扩展库及其版本号(不知道怎么用。。?)pipinstallSomePacka......
  • Flutter/Dart第09天:Dart高级特殊Pattern模式的概览和用法
    Dart官方文档:https://dart.dev/language/patterns重要说明:本博客基于Dart官网文档,但并不是简单的对官网进行翻译,在覆盖核心功能情况下,我会根据个人研发经验,加入自己的一些扩展问题和场景验证。Pattern模式匹配的定义官网定义:PatternsareasyntacticcategoryintheDartlan......
  • Python万物皆对象
    Python中一切均为对象Python从设计之初为一门面向对象语言也就是说,实际上不管是数字、字符串、元组、列表、字典、函数、方法、类、模块甚至你的代码都是对象。对象的概念什么是Python中的对象呢?在Python中,定义是松散的,某些对象既没有属性也没有方法,而且不是所有的对象都......
  • python练习1| 实现学生类
    定义一个学生类,属性包含姓名,学号,语数外三门的成绩要求:能够设置学生某科目的成绩;能打印该学生的所有科目成绩点击查看代码classStudent:def__init__(self,student_name,student_id):self.name=student_nameself.student_id=student_idse......
  • python 中map模块
     map函数会根据提供的函数对指定的序列做映射。第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列,返回的是一个集合。 001、>>>deffun01(x):##测试函数...returnx*100...>>>list1=[8,3,2,7]>>>>>>list(map(fun01,......
  • python 常用函数用法
    pygame初始化pygame.init()创建窗口_screen_=pygame.display.set_mode((_x_,_y_))pygame.display.set_caption(_name(string)_)显示图片_screen_.blit(_image_,(_x_,_y_))加载图片_name_=pygame.image.load(_image_)修改图片_name_=pygame.transform.roto......
  • python基础操作练习题
    使用版本:python3.6.8IDE:pycharm前言这些练习题是在神经网络与深度学习课程上老师提供的,原因是有些同学没学过python,作为简单的练手习题。题目都很简单,加上python本身也比较简单,有些题目的作答可以一行代码实现(虽然可读性就下降了)。练习题2.1数位之和编写程序,输入一个正......