【python】进程与多进程:Process语法、 pid 和 ppid 的用法、concurrent.futures模块!

concurrent.futures模块ThreadPoolExecutor、ProcessPoolExecutor讲解及使用实例 阅读详情

包含编程籽料、学习路线图、爬虫代码、安装包等!【点击这里】

关于python 进程与多进程
概念:
进程即正在执行的一个过程,进程是对正在云的程序的一个抽象。
进程的概念起源与操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一,操作系统的其他所有内容都是围绕进程的概念展开的;

【进程】与【线程】
【进程】进程指正在运行的程序。确切的来说,当一个程序进入内存运行,即变成一个进程
进程是处于运行过程中的程序,并且具有一定独立功能。

【线程】线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。
一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。

【理论知识拓展】:

操作系统的作用:
1:隐藏丑陋复杂的硬件接口,提供良好的抽象接口;
2:管理、调度进程,并且将多个进程对硬件的竞争变得有序;

多道技术:
产生背景:针对单核,实现并发
【强调】 现在的主机一般是多核,那么每个核都会利用多道技术;

【重点】有4个cpu,运行于cpu1的某个程序遇到io阻塞,会等到io结束再重新调度,会被调度到4个cpu中的任意一个,具体由操作系统调度算法决定。

【空间上的复用:】如内存中同时有多道程序;

【时间上的复用:】复用一个cpu的时间片;

【 强调:遇到 io 切,占用 cpu 时间过长也切,核心在于切之前将进程的状态保存下来,这样才能保证下次切换回来时,能基于上次切走的位置继续运行】

【进程与程序的区别】
程序仅仅只是一堆代码而已,进程指的是程序的运行过程。

【并发与并行】

无论是并行还是并发,在用户看来都是‘同时’运行的,不管是进程还是线程,都只是一个任务而已;真是干活的是cpu,cpu来做这些任务,而一个cpu同一时刻只能执行一个任务。

并发:是伪并行,即看起来是同时运行,单个cpu+多道技术就可以实现并发,(并行也属于并发)

并行:同时运行,只有具备多个cpu才能实现并行;

在这里插入图片描述
【同步与异步】

同步执行:一个进程在执行某个任务时,另外一个进程必须等待其执行完毕,才能继续执行。(打电话;视频聊天)

异步执行:一个进程在执行某个任务时,另外一个进程无需等待其执行完毕,就可以继续执行,当有消息返回时,系统会通知进行处理,这样可以提高执行效率。(发短息;)

【进入主题】

进程的创建
但凡是硬件,都需要有操作系统去管理,只要有操作系统,就有进程的概念,就需要有创建进程的方式,一些操作系统只为一个应用程序设计。而对于通用系统(跑很多应用程序),需要有系统运行过程中创建或撤销进程的能力,主要分为4中形式创建新的进程

系统初始化(查看进程linux中用ps命令,windows中用任务管理器,前台进程负责与用户交互,后台运行的进程与用户无关,运行在后台并且只在需要时才唤醒的进程,称为守护进程,如电子邮件、web页面、新闻、打印)

一个进程在运行过程中开启了子进程

用户的交互式请求,而创建一个新进程

一个批处理作业的初始化(只在大型机的批处理系统中应用)

【新进程的创建都是由一个已经存在的进程执行了一个用于创建进程的系统调用而创建的】

在这里插入图片描述
【解释】创建子进程时,只需要传入一个执行函数和函数的参数,创建一个Process实例,用start()方法启动。join()方法可以等待子进程结束后再继续往下运行,通常用于进程间的同步。

关于Process语法
Process语法结构如下:

Process([group [, target [, name [, args [, kwargs]]]]]) 由该类实例化得到的对象,表示一个子进程中的任务(尚未启动)

(1) 需要使用关键字的方式来指定参数;

(2) args指定的为传给target函数的位置参数,是一个元组形式,必须有逗号;

在这里插入图片描述
Process创建的实例对象的常用方法:
在这里插入图片描述
Process创建的实例对象的常用属性:
在这里插入图片描述
【补充】可以同时启动多个进程,进程内部可以再起线程。例子如下:
在这里插入图片描述
【注意】:在windows中process()必须放到 # if name == ‘main’:下

关于进程中 pid 和 ppid 的用法
在这里插入图片描述
【进程中间,全局变量不共享】进程间内存是独立的
在这里插入图片描述
输出:
在这里插入图片描述
multiprocessing模块介绍
python中多线程无法利用多核优势,如果想要充分地使用多核cpu的资源,可以使用os.cpu_count()
在python中大部分情况需要使用多进程,python提供了multiprocessing

multiprocessing模块用来开启子进程,并在子进程中执行我们定制的任务(比如函数),该模块与多线程模块threading的编程接口类似。

【反复强调】与线程不同,进程没有任何共享状态,进程修改的数据,改动仅限与该进程内。

关于concurrent.futures模块
【背景】Python标准库为我们提供了threading和multiprocessing模块编写相应的异步多线程/多进程代码。
从Python3.2开始,标准库为我们提供了concurrent.futures模块,它提供了ThreadPoolExecutor和ProcessPoolExecutor两个类

【ThreadPoolExecutor和ProcessPoolExecutor继承了Executor,分别被用来创建线程池和进程池的代码。】
Executor实现了对threading和multiprocessing的更高级的抽象,对编写线程池/进程池提供了直接的支持。

关于concurrent.futures的基础模块executor和future
Executor是一个抽象类,它不能被直接使用。但是它提供的两个子类ThreadPoolExecutor和ProcessPoolExecutor却是非常有用,顾名思义两者分别被用来创建线程池和进程池的代码。我们可以将相应的tasks直接放入线程池/进程池,不需要维护Queue来操心死锁的问题,线程池/进程池会自动帮我们调度。

Future这个概念,你可以把它理解为一个在未来完成的操作,这是异步编程的基础,传统编程模式下,比如我们操作queue.get的时候,在等待返回结果之前会产生阻塞,cpu不能让出来做其他事情,而Future的引入帮助我们在等待的这段时间可以完成其他的操作。

最后:
如果你是准备学习Python或者正在学习(想通过Python兼职),下面这些你应该能用得上:
包括:Python安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!

在这里插入图片描述

手把手教你用DevExpress Patch工具解决VS项目中的试用弹窗问题 本文详细指导开发者使用DevExpress Patch工具解决Visual Studio项目中恼人的试用弹窗问题。核心在于理解并分步处理:首先正确应用补丁工具以绕过运行时验证,然后重点清理或重置项目中的licenses.licx文件以消除编译时验证,从而彻底根治弹窗。 阅读详情

相关推荐

GLDAS数据高效处理指南:基于Matlab的NC4转GeoTIFF实战解析

本文提供了一份基于Matlab的GLDAS数据处理实战指南,详细解析了如何将NetCDF4格式的GLDAS数据高效、准确地批量转换为GIS友好的GeoTIFF格式。文章核心内容包括数据理解、环境搭建、核心代码逐步拆解、效率提升技巧以及常见避坑方案,旨在帮助全球生态、水文与气候领域的研究者打通数据预处理的关键环节,提升科研工作效率。

weixin_29094775的博客 311

Python多进程(process)(一)进程和进程池

在Python中因为有GIL的原因,线程能提供的并发效果并不理想,Python在多核上如果要释放并发的性能,更多的依靠多进程,我们会比线程更深入的去学习多进程。进程(Process),顾名思义,就是进行中的程序。。进程是资源分配的最小单元,也就是说每个进程都有其单独的内存空间。Unix/Linux系统通过fork系统调用创建一个进程,但是在Windows中并没有fork调用。但是别担心,Python中内置的的,我们可以。

2508

脑影像分析入门:如何用一般线性模型(GLM)处理fMRI数据?

本文为神经影像研究入门者详细解析了如何运用一般线性模型(GLM)处理fMRI数据。文章从GLM的核心原理出发,逐步拆解了从实验设计、构建稳健设计矩阵、模型估计与统计推断,到高阶分析及多重比较校正的全流程,并指出了常见陷阱与结果解读要点,是掌握fMRI数据分析基础的关键指南。

weixin_29091445的博客 400

Python中的Process和Pool: 多进程处理的利器

Process类是模块中的一个核心类,用于创建一个单独的进程。每个Process对象都可以执行一个函数或者方法,从而在单独的进程中执行任务。Process和Pool,并通过示例代码演示了它们的基本用法。同时,也探讨了多进程在实际项目中的应用场景,包括并行计算、IO密集型任务和并行任务处理等。多进程处理是Python中一种强大的并行处理技术,可以提高程序的性能和效率,特别是在处理大规模数据或IO密集型任务时具有明显的优势。希望本文能够帮助大家更好地理解和运用多进程处理技术。

涛哥聊Python 2908

linux上使用tun/tap设备模拟一个虚拟网卡,并将该虚拟网卡连接到新创建的网桥上

tun/tap设备是操作系统内核中的虚拟网络设备,是用软件模拟的网络设备,提供与硬件网络设备完全相同的功能。主要用于用户空间和内核空间传递报文。tun/tap对于硬件网络设备而言,一端连接的是物理网络,一端连接的是网络协议栈。对于tun/tap设备而言,一端连接的是应用程序(通过 字符设备文件),一端连接的是网络协议栈。

糖果墙的博客 6411

LLVM 编译器学习笔记之三十六-- 指令调度Instruction scheduling

1、参考Instruction scheduling in LLVM - 知乎,在中后端均存在指令调度 指令调度模型 2、在llvm12->llvm14 中Machine Instruction Scheduler有个patch增强了load/store指令的合并,也就是指令调度不仅仅只是改变指令的顺序,该优化类似gcc中的store-merge优化 .....................................................................

~ 飞 扬 的 天 空 ~ 5688

Python基础之进程(Process)

进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。 狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is...

PythonGo 6万+

西门子840D新建项目

1、需要一个32位的WIN7或者XP系统,并且已经在系统中安装完成西门子840Dsl开发包和VS2008。(我采用的是XP系统虚拟机) 2、在开始->所有程序找到如下位置 3、在这个位置打开Visual Studio 4、文件->新建->项目 名称和位置都可以随意更改,点击确定。 5、在左侧选择第二个选项进入下面的界面 点击“Add Screen”按钮 可以修改“class name”然后点击“OK”返回上一个界面,再点击“Add Form” 可以修...

qq_36987047的博客 1861

Python 并发编程 Process 进程、Thread 线程、阻塞模型、asyncio 协程等基础教程

01、进程的基本介绍 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础,进程是线程的容器。 什么是进程? 进程的概念主要有两点: 第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令(比如错误信息

唤醒手腕 2571

Coze 打通飞书多维表格,实现数据增删改查操作实战详解

基于Coze 打通飞书多维表实现数据录入系统实战详解

congge 5780

sap资产post记录查询时候 报错 如图

SAP资产过账查询报错AA653解决方案摘要 错误原因:系统无法计算会计年度期间的最后一天,导致资产折旧/过账失败。常见原因包括:1)未创建2025年期间版本;2)期间日期映射不完整;3)依赖日历但未生成2025年日历。 解决方法: 通过OB37维护2025年12/13个完整期间 补充缺失期间或修正结束日期 使用SCAL生成2025年工厂日历 验证步骤: 检查T009R表2025年记录完整性 测试AFAB折旧运行 重新查询资产过账 提示:建议财务团队统一维护跨年度期间数据,并在测试系统验证变更。

金牌架构师 834

Python进程与多进程:Process语法、PID和PPID的用法、concurrent.futures模块详解

Python进程与多进程编程摘要(149字) 本文系统介绍Python多进程编程的核心技术:1) Process类两种创建方式(直接调用/继承式)及生命周期管理;2) 进程标识符PID/PPID的获取方法及进程树分析;3) concurrent.futures模块的高阶并发实现。重点讲解了ProcessPoolExecutor的进程池管理、任务提交与回调机制,并提供了CPU密集型任务的优化公式(max_workers = os.cpu_count())。通过代码示例演示了进程同步、僵尸进程处理等实际问题解决

1242

华为OD机试真题 Java&Go 实现【优雅子数组】【100%通过率】【2022.11 Q4 新题】

如果一个数组中出现次数最多的元素出现大于等于K次,被称为K -优雅数组,k也可以被称为优雅阈值。例如,数组1,2,3,1、2,3,1,它是一个3-优雅数组,因为元素1出现次数大于等于3次,数组1,2,3,1,2就不是一个3-优雅数组,因为其中出现次数最多的元素是1和2,只出现了2次。给定一个数组A和k,请求出A有多少子数组是k-优雅子数组。

MISAYAONE的博客 1万+

python:Process语法、 pid 和 ppid 的用法、concurrent.futures模块

推荐一下我建的python学习交流qun:850973621,群里有免费的视频教程,开发工具、 电子书籍、项目源码分享。一起交流学习,一起进步! 关于python 进程与多进程 概念: 进程即正在执行的一个过程,进程是对正在云的程序的一个抽象。 进程的概念起源与操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一,操作系统的其他所有内容都是围绕进程的概念展开的; 【进程】与【线程】 【进程】进程指正在运行的程序。确切的来说,当一个程序进入内存运行,即变成一个进程 进程.

Ugyfyv的博客 698

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Linux进程全解析:从fork到僵尸进程,一次搞懂生命周期与排查实战

进程是操作系统中最基础也最核心的概念,它代表程序的一次动态执行。在Linux中,每个进程都由task_struct描述,通过fork与exec诞生,并经历运行、阻塞、僵尸等状态。理解进程的生命周期与IPC通信机制,是排查CPU飙升、端口占用、进程卡死等问题的关键。本文从进程的本质出发,贯穿进程树、线程、调度、管道与共享内存等知识点,并通过真实案例演示如何使用ps、top、kill等工具诊断僵尸进程与守护进程,帮助开发者从概念到实践彻底掌握Linux进程管理。

weixin_29597551的博客 279

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

进程是什么?从原理到故障排查的完整指南

进程是操作系统中最核心的抽象概念之一,它代表了程序的一次动态执行过程。理解进程与程序的区别、虚拟地址空间的隔离机制、进程控制块的作用,以及进程的状态流转,是深入掌握系统运行原理的基础。操作系统的隔离与复用设计,使得进程既能独立运行又能安全通信,而IPC机制则让协作成为可能。在实际工程中,无论是Java服务CPU飙高、进程变成僵尸态,还是Nginx worker权限异常、VS Code终端启动失败,本质上都离不开对进程的理解与排查。掌握ps、top、lsof、jstack等工具,结合进程状态分析和守护进程配置

weixin_34417200的博客 270

LFM2.5-Encoders:CPU优化长文本推理工具部署与实践指南

长文本处理是自然语言处理中的基础技术挑战,传统方法在处理超长文档时面临内存溢出和计算效率低下的问题。基于编码器架构的优化原理,通过分块处理和缓存机制实现高效推理,其技术价值在于降低硬件门槛,让没有GPU的用户也能处理大规模文本任务。在文档分析、代码审查、学术论文摘要等应用场景中,CPU优化的推理工具尤为重要。LFM2.5-Encoders项目专门针对CPU推理优化和长上下文支持进行深度优化,解决了传统大语言模型在CPU上推理速度慢的痛点,为本地化长文本处理提供了可行的工程实践方案。

weixin_34162228的博客 368

昇腾AI智能体推理加速:openJiuwen算力亲和技术实战指南

在AI推理部署领域,模型在专用硬件上的性能优化是提升服务效率、降低运营成本的关键。其核心原理在于通过软硬件协同设计,优化计算图执行、内存调度与算子实现,从而充分释放硬件算力。这种优化的技术价值直接体现在降低推理时延和减少资源占用上,对于构建高并发、低延迟的AI服务至关重要。典型的应用场景包括实时对话系统、智能客服和在线交互应用,其中首token生成速度直接影响用户体验。本文聚焦于openJiuwen项目提出的“算力亲和”技术,该技术针对华为昇腾AI处理器,通过深度优化智能体模型的加载、计算与内存访问流程,旨

weixin_34318272的博客 441

【python基础】十八、Python process 进程

进程 线程 协程 并发: 一个cpu, 轮流交替进行多线程 并行: 多个cpu, 同时执行,或 同时并发执行 进程 > 线程 > 协程 > 生成器 都可以实现多任务: 与特点有关 任务比较多 用进程 爬虫 用线程 或 协程 进程(Process),操作系统结构的基础, 曾经,面向进程设计的计算机结构中,进程就是程序的基本执行实体.(一个c) 当代,面向线程设计的计...

iShooting的博客 1848

Python----Python高级(并发编程:进程Process,多进程,进程间通信,进程同步,进程池)

Python----Python高级(并发编程:进程Process,多进程,进程间通信,进程同步,进程池)

weixin_64110589的博客 2200

Python 进程 Process 模块 - Python零基础入门教程

目录 一.Python 进程 Process 简介 二.Python 进程 Process 模块 三.Python 进程 Process 函数介绍 四.Python 进程 Process 使用 五.Python 进程 Process 小窍门 六.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 一.Python 进程 Process 简介 进程 Process 是对各种资源管理的集合,包含对各种资源的调用、内存的管理、网络接口的调用;

猿说编程 1015

教你一招:Python使用Process子类创建进程

在`if __name__ == '__main__':`的条件下,我们创建了一个子进程`p`,并调用其start()方法启动子进程,接着使用p.join()等待子进程执行完毕,最后打印出"主进程执行"。在上述示例中,我们定义了一个SenderProcess子类和一个ReceiverProcess子类,分别用于发送进程和接收进程的逻辑。在上述示例中,我们首先导入了multiprocessing模块,然后定义了一个名为MyProcess的子类,继承自Process类。除了上述常用的方法和属性外,

m0_70911440的博客 1542

Python Process 全面指南

本文全面介绍了Python中的Process类,它是multiprocessing模块的核心类,用于创建和管理独立子进程,实现真正的并行处理。文章详细讲解了两种创建方式(函数方式和类继承方式)、常用方法(start(),join(),is_alive(),terminate())和重要属性(pid,name,daemon,exitcode)。特别强调了守护进程的作用和退出码的含义,并提供了Windows系统下的安全创建注意事项。通过掌握这些内容,开发者可以有效实现并行计算、后台任务管理和异常处理,提升程序性

diaobusi的博客 746

Python--开启多进程(Process 模块)与开启多线程(Thread 模块)

开启多进程:Process 类与 Thread 类的介绍; start (), run(), terminate() , is_alive() , join( ) 方法详解 ; 开启进程或线程的两种方式; Process 与 Thread 的区别---守护进程与守护线程的区别; Python 能开启线程,又提供进程方法的原因;

weixin_43988680的博客 3965

Python中的程序,进程,线程

【代码】Python中的程序,进程,线程。

piziliul的博客 685

python 并行计算 concurrent.futures、pp模块 简介

目录 concurrent.futures模块 1、基本概念 2、创建executor和future pp模块 1、基本概念 2、建立多进程Server 3、建立子进程任务Task 实例(concurrent.futures模块) (1)concurrent.futures.ProcessPoolExecutor(),submit方法 (2)concurrent.futures.ProcessPoolExecutor(),map方法 实例(pp模块) (1)pp.Server(),s

whatday的专栏 1697

python 内置模块 concurrent.futures异步编程库,线程池、进程池

concurrent.futures是重要的异步编程库。内部实现机制非常复杂,简单来说就是开辟一个固定大小为n的进程池/线程池。进程池中最多执行n个进程/线程,当任务完成后,从任务队列中取新任务,若池满,则排队等待concurrent.futures主要实现了进程池和线程池,适合做派生一堆任务,异步执行完成后,再收集这些任务,且保持相同的api,池的引入带来了一定好处:开发更快,代码简洁,调调函数进程线程复用,减去了大量开辟,删除进程线程时的开销。

老衲爱洗头的博客 935
上一篇: Python中9个难以理解的知识点详解!
下一篇: 2025年最新PyCharm IDE安装与配置教程(详细图文)
Python_trys
博客等级 码龄2年 4369粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值