Python进程讲解

Python多进程讲解(附实例) Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。 阅读详情

1.进程

简单的说就是实现唱歌跳舞同时进行,那么就需要一个新的方法,叫做:多任务

2.多任务的概念

  • 简单地说,就是操作系统可以同时运行多个任务
  • 并行执行多任务只能在多核CPU上实现,但是,由于任务数量远远多于CPU的核心数量,所以,操作系统也会自动把很多任务轮流调度到每个核心上执行
  • 就是说当cpu核心数量大于任务数量就是并行,反过来,就是并发
  • 依照的规则有时间片轮转,优先级调度

3.进程的创建-fork

  • 程序:编写完毕的代码,在没有运行的时候,称之为程序
  • 进程:正在运行着的代码,还有需要运行的环境等
  • fork( ):
    Python的os模块封装了常见的系统调用,其中就包括fork
import os
 
# 注意,fork函数,只在Unix/Linux/Mac上运行,windows不可以
 
pid = os.fork()
 
    if pid == 0:
        print('哈哈1')
 
    else:
      print('哈哈2')
 
# 程序执行到os.fork()时,操作系统会创建一个新的进程(子进程),然后复制父进程的所有信息到子进程中
# 然后父进程和子进程都会从fork()函数中得到一个返回值,在子进程中这个值一定是0,而父进程中是子进程的 id号
# 普通的函数调用,调用一次,返回一次,但是fork()调用一次,返回两次,因为操作系统自动把当前进程(称为父进程)复制了一份(称为子进程),然后,分别在父进程和子进程内返回
# getpid()是获取当前进程(主进程或子进程)的id、getppid()获取父进程的id

4.多进程修改全局变量

多进程中,每个进程中所有数据(包括全局变量)都各有拥有一份,互不影响,所以在修改全局变量的时候,两个变量相互独立

5.多次fork问题

下次遇到多进程就画图,再如:

os.fork()
os.fork()
os.fork()      # 就变成了8个进程

在while True中,如果有os.fork(),程序一定崩,这就相当于fork炸弹,死循环创建进程

6.multiprocessing模块

  • multiprocessing模块提供了一个Process类来代表一个进程对象
  • 跨平台的操作,fork只在linux下才有效,所以平时应该使用process,它是一个类

程序如下:

from multiprocessing import Process
import time
 
def test():
    while True:
        print("---test---")
        time.sleep(1)
         
P = Process(target=test)
 
P.start()  # 让这个进程开始执行test函数里的代码
 
while True:
    print("---main---")
    time.sleep(1)
 
说明:
# 创建子进程时,只需要传入一个执行函数和函数的参数,创建一个Process实例,用start()方法启动
# 这样创建进程比fork()还要简单
# join()方法可以等待子进程结束后再继续往下运行,通常用于进程间的同步,这就与fork不同,需要等子进程结束,主进程才可以结束

7.Process语法结构

Process([group [, target [, name [,  args [, kwargs]]]]])
  • target:表示这个进程实例所调用对象;
  • args:表示调用对象的位置参数元组;
  • kwargs:表示调用对象的关键字参数字典;
  • name:为当前进程实例的别名;
  • group:大多数情况下用不到;

8.Process类常用方法

  • is_alive():判断进程实例是否还在执行;
  • join([timeout]):是否等待进程实例执行结束,或等待多少秒;
  • start():启动进程实例(创建子进程);
  • run():如果没有给定target参数,对这个对象调用start()方法时,就将执行对象中 的run()方法;
  • terminate():不管任务是否完成,立即终止;

9.Process类常用属性

  • name:当前进程实例别名,默认为Process-N,N为从1开始递增的整数;
  • pid:当前进程实例的PID值
  • 进程的创建-Process子类:
    创建新的进程还能够使用类的方式,可以自定义一个类,继承Process类,每次实例化这个类的时候,就等同于实例化一个进程对象
    如果想知道程序的运行时间,可以用开始和结束的time.time()两个时间差,就代表运行时间

10.进程池pool

  • 当需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态成生多个进程
  • 但如果是上百甚至上千个目标,手动的去创建进程的工作量巨大,此时就可以用到multiprocessing模块提供的Pool方法
P0 = Pool(3) # 定义一个进程池,最大进程数3
for i in range(0,10):
 
    # Pool.apply_async(要调用的目标,(传递给目标的参数元组,))(非堵塞式)
    # Pool.apply(worker,(i,)) (堵塞式),主进程卡在这里,需要等子进程完成才能添加
    # 每次循环将会用空闲出来的子进程去调用目标
     
    P0.apply_async(worker,(i,)) # work是一个函数
    P0.close() # 关闭进程池,关闭后po不再接收新的请求
    P0.join() # 等待po中所有子进程执行完成,必须放在close语句之后

11.多种创建进程的方式比较

os.fork()中,子进程和父进程可以都执行,而且父进程可以不必等待子进程结束

p = process(target=xxx)
p.start()
# 子进程和父进程都可执行
pool = Pool(3)
pool.apply_async(xxx)
# 主进程一般用来等待,真正的任务都在子进程中执行

12.进程间通信-Queue

1.Process之间有时需要通信,操作系统提供了很多机制来实现进程间的通信。
2.Queue的使用:
可以使用multiprocessing模块的Queue实现多进程之间的数据传递,Queue本身是一个消息列队程序
队列:先进先出
栈:先进后出
初始化Queue()对象时(例如:q=Queue()),若括号中没有指定最大可接收的消息数量,或数量为负值,那么就代表可接受的消息数量没有上限(直到内存的尽头)

from multiprocessing import Queue
 
q = Queue(3) # 初始化一个Queue对象,最多可接收三条put消息
#Python小白学习交流群:711312441 
try:
    q.put_nowait("消息4")
 
except:
    print("消息列队已满,现有消息数量:%s"%q.qsize())
  • Queue.qsize():返回当前队列包含的消息数量;
  • Queue.empty():如果队列为空,返回True,反之False;
  • Queue.full():如果队列满了,返回True,反之False;
  • Queue.get([block[, timeout]]):获取队列中的一条消息,然后将其从列队中移除,block默认值为True
  • Queue.get_nowait():相当Queue.get(False);应该把它放在try里面
  • Queue.put(item,[block[, timeout]]):将item消息写入队列,block默认值为True

3.进程池中的Queue:
如果要使用Pool创建进程,就需要使用multiprocessing.Manager()中的Queue(),而不是multiprocessing.Queue()

13.孤儿进程和僵尸进程

  • 孤儿进程:是指父进程结束,但子进程还未结束,通常的情况下父进程可以清除子进程 的垃圾,表示子进程没人收尸了
  • 僵尸进程:是指子进程结束了,父进程还未结束
  • 一般在操作系统中,0号进程负责切换任务,1号进程负责生子进程,并负责打理孤儿进程
从‘最速控制’到代码:深入拆解韩京清ADRC中TD跟踪器的fhan函数(含Matlab/Simulink实例) 本文深入解析韩京清ADRC中的fhan函数,从理论到代码实现,详细拆解其在Matlab/Simulink中的应用。通过分析最速控制问题和非线性TD的连续形式,揭示fhan函数在信号处理和噪声抑制中的独特优势,并提供工程实践中的参数整定和优化技巧。 阅读详情

相关推荐

全国充电站分布数据

CnOpenData推出的充电站数据覆盖全国34个省份的3万条数据,包含充电站名称、省份名称、省份代码、商圈、经纬度等地理信息以及商业类型、评分、消费等衍生信息,能为城市规划、环境科学、市场分析、技术发展和社会经济研究等多个领域提供宝贵的数据支持。

Sunny9qx的博客 4022

Python中的进程

在Python程序中,想要实现多任务可以使用进程来完成,进程是实现多任务的一种方式。args表示以元组的方式给执行任务传参kwargs表示以字典方式给执行任务传参。

__Samual的博客 3684

USB设备识别码VID和PID详解:如何查询和自定义你的设备ID

本文详细解析了USB设备识别码VID和PID的核心作用、查询方法及自定义配置技巧。VID(供应商识别码)和PID(产品识别码)是USB设备的唯一身份证,用于驱动匹配和功能识别。文章提供了Windows和Linux系统下的查询方法,并探讨了如何合法获取和自定义VID/PID,适合硬件开发者和DIY爱好者参考。

weixin_29168675的博客 1434

python 进程 (概念+示例代码)

1. 进程的概念 2. 进程的状态 3. 进程的基本使用 4.进程的名称和PID 4.1 获取主进程的名称 4.2 获取子进程的名称 4.3 设置子进程的名称 4.4 获取进程PID (process id) 4.5 获取子进程的父id 4.6 杀掉进程 5. 进程参数、全局变量问题 5.1 进程的参数传递 5.2 进程间不共享全局变量 6 守护主进程 ...

ChaoChao66666的博客 3926

私募pp网-私募排行js逆向

在数据采集的学习过程当中,发现了一个有意思的网站,所以记录一下,仅供学习交流,用于其他用途与作者无关。目标:私募基金当中的列表页数据。

zzp28218的博客 1895

基于ADS的低噪声放大电路设计

1. 低噪声放大器设计理论基础 1.1 低噪声放大器在通信系统中的作用 低噪声放大器的主要作用是放大天线从空中接收到的微弱信号,减小噪声干扰,以供系统解调出所需的信息数据。当今,人们对于各种无线通信工具的要求越来越高,如功率辐射要小、作用距离要远、覆盖范围要广等,这就对系统的接收灵敏度提出了更高的要求,系统接收灵敏度的计算公式为: Smin⁡=−144(dBmHz)+NF+10lg⁡BW(MHz)+SN(dB) {S_{\min }} = - 144\left( {\frac{{{\rm{dBm}}}}{

ASH_GUARDIAN的博客 4万+

python进程

进程:一个程序运行起来后,代码+用到的资源称之为进程,他是操作系统分配资源的基本单位进程也可以完成多任务- 进程是系统进行资源分配和调度的一个独立单位.- 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.

m0_60861079的博客 1348

先进封装Interposer仿真步骤及说明

摘要: Interposer仿真是2.5D/3DIC封装设计的关键环节,涵盖信号完整性(SI)、电源完整性(PI)、热及结构应力分析。流程分为五个阶段:1)前处理,定义层叠结构与材料属性;2)参数提取,通过3D电磁建模获取TSV、传输线等寄生参数;3)仿真设置,选择求解器并设定频率范围;4)结果分析,评估信号损耗、阻抗及电源网络性能;5)后处理,进行多物理场协同仿真并生成模型。核心挑战在于多尺度与多物理场耦合,需优先确保高速信号与电源网络的仿真精度。常用工具包括Ansys HFSS、Cadence Sigr

DSY_0324的博客 1342

【Python基础编程】全面解析进程、进程通信与生产者-消费者模式

上篇文章主要了解python的线程,如何创建线程,如何通过线程实现生产者-消费者模式以及线程池的使用等等,接下来这篇文章讲解python的进程,有问题欢迎一起探讨。在 python 中,进程是操作系统分配的独立执行单元,它包含程序代码、数据以及一系列运行时资源,如内存、文件描述符等。进程是操作系统进行任务调度和资源管理的基本单位。python 提供了多种方法来创建和管理进程,通常通过模块来实现多进程操作。进程是操作系统中正在执行的程序实例。每个进程都有自己的内存空间、全局变量以及系统资源。

易辰的博客 1767

Rokid眼镜高精度图像识别的五大工程破局点

图像识别是AR交互的基础能力,其核心在于将现实图像映射为可计算的数字特征,并通过几何建模解算空间姿态。在专用AR眼镜场景中,该过程面临光学畸变、传感器时序错位、低延迟跟踪与人因适配等复合挑战。尤其在工业现场,Rokid Max系列的鱼眼镜头畸变、IMU-视觉异步采样、窄FOV下快速眼动等物理约束,使传统基于AR Foundation或OpenCV的识别方案失效。本文聚焦真实部署中的关键瓶颈,涵盖实时反畸变纹理渲染、原生SDK直调优化、端侧轻量CNN模型(TinyImageNet-Rokid)、IMU-视觉紧

weixin_33681778的博客 697

边缘AI工业落地:YOLO26-Seg + RK3588 NPU 极致部署(低功耗+实时实例分割,工业场景全覆盖)

本次实战汇总了「YOLO26-Seg+RK3588 NPU」工业边缘部署中最常见、最致命的8个坑点,所有坑点均来自真实工业项目,解决方案均为零代码/一键操作,无需复杂配置,能让你少走90%的弯路,节省大量时间,必看必记!❌ RKNN转换报错「算子不支持/模型加载失败」→ ✅ 导出ONNX时必须指定opset=12,重新导出即可,RK3588唯一兼容版本;❌ 分割mask错位/轮廓模糊 → ✅ 导出ONNX时加,并保证RKNN的归一化参数与YOLO26一致,零代码修复;

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1717

Python中的多进程编程详解

在操作系统中,进程是一个执行中的程序实例。每个进程都有自己的一套内存空间和系统资源。进程可以创建其他进程,这些新的进程被称为子进程。父进程和子进程可以并行或并发运行。多进程编程是一种利用多个进程并行处理任务的技术,它可以充分利用多核或多处理器系统的计算能力,提高程序的执行效率。Python提供了模块来支持多进程编程。

小小张说故事的博客 425

《Autosar_BSW高阶配置》总目录_培训教程持续更新中...

目录 一、Autosar COM Module 二、Autosar BswM Module 三、Autosar EcuM Module 四、Autosar DCM Module 五、Autosar DEM Module 六、其它Module陆续推出 欢迎大家订阅《Autosar_BSW高阶配置》专栏(可以理解为是Autosar培训教程),该专栏每周至少更新一篇,一次订阅,不再二次收费,献上常用的案例和配置方法。下方整理了相关博文的链接(单击蓝色字体即可跳转),方便大家获取。 本专栏...

「汽车电子助手」的博客 4万+

python3 多进程讲解 multiprocessing

在Python中,模块提供了一个强大的基于进程的并行性。这意味着它允许你利用多个处理器上的多个核心,从而可以显著提高某些类型任务的执行速度。这对于CPU密集型任务特别有用,比如大规模数学计算、图像处理等。

言之。 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

python进程讲解

本文介绍了Python中进程的创建方法和进程间通信。进程创建有三种方式:1)使用multiprocessing.Process()直接创建;2)继承Process类创建子类;3)使用进程池Pool创建。重点讲解了Process()的参数配置和常用方法,如start()、join()等。在进程通信方面,介绍了通过Queue和Manager().Queue实现进程间数据传递的方法,并提供了具体代码示例。文章还比较了同步(apply)和异步(apply_async)进程调用的区别,建议优先使用multiproce

m0_73671207的博客 351

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

python多进程讲解

python多任务之进程一、第一个demo二、队列Queue三、进程池Pool 一、第一个demo 进程:一个程序运行起来后,代码+用到的资源 称为进程,他是操作系统非配资源的基本单元。线程完成的多任务,进程也可以 进程在python中使用multiprocessing模块中的Process来定义使用。 举例:"""多任务进程""" import multiprocessing import time def test1(): while True: print('---test

sugar 4743

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

python进程池简单讲解

多进程是是实现多任务的一种方法,进程池是实现多进程的一种方法,它可以定义一次可以执行多少个进程。对于知道需要同时执行多少个任务,而且同时执行任务较少(比如:同时执行5个任务),可以直接创建相应数量的进程。但对于所需要进程数量不确定,而且同时执行任务很多的情况下(比如:同时执行1000个任务),你不可能同时创建1000个进程,这样你的电脑会卡死,所以需要进程池来管理进程。 下面使用python来实现...

husky66的博客 302

多进程(python语言实现,详细讲解)

并发是任务数多于cpu核数,这样看起来是一起执行,其实切换比较快而已 并行就是任务数小于cpu核数,一起执行 单核其实就是类似于并发,一个一个切换的比较快,多核可以看成多个单核,类似操作。 调度算法:什么样的情况下让谁先执行,就是调度算法 进程:正在运行的代码 程序:编写完毕的代码,没有运行 进程的三个状态:就绪,运行,阻塞 ————————————————————————————————————...

qq_42738654的博客 482

由浅入深走进Python异步编程【多进程】(含代码实例讲解 || multiprocessing、异步进程池、进程通信)

从底层到第三方库,全面讲解python的异步编程。这节讲述的是python的多线程实现,纯干货,无概念,代码实例讲解。本系列有6章左右,点击头像或者专栏查看更多内容,陆续更新,欢迎关注。

bin789456的博客 2658

Python多线程、多进程和协程的实例讲解

线程、进程和协程是什么 线程、进程和协程的详细概念解释和原理剖析不是本文的重点,本文重点讲述在Python中怎样实际使用这三种东西 参考: 进程、线程、协程之概念理解 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单...

ZhangQiye1993的博客 2341

python线程进程的用法实例+讲解

线程共享数据 → 必须加锁进程独立数据 → 通信要用 Queue进程池通信 → 必须用 Manager ().QueueIO 密集 → 线程池CPU 密集 → 进程池Windows 多进程 → 必须加 if *name*== “*main*"""@Desc:"""# ===================== 0. 导入模块 =====================import os。

2302_80130040的博客 280

python并发编程(多线程, 多进程, 线程池, 进程池)讲解

python支持的几种并发方式进行简单的总结 - Chen Jian - 博客园 https://www.cnblogs.com/chjbbs/p/8205428.html python并发编程(多线程, 多进程, 线程池, 进程池)讲解 本文对python支持的几种并发方式进行简单的总结。(并发编程中, 还包括协程, 但是本文不做讨论) Python支持的并发分为多线程并发...

我是guyue,guyue就是我O(∩_∩)O 2954

“不可能学不会的”--python多进程讲解+代码

本文讲述了部分python多进程的知识,希望大家能够多多给出建议,谢谢!

2301_77897903的博客 2238

举例讲解Python多进程入门:从零搭建你的并行厨房

🌟 **Python多进程编程全解:从厨房哲学到代码实战**用生活化案例掌握进程创建、通信与实战应用。

程之编的博客 697

python多线程和多进程、协程入门讲解(笔记)

进程和线程究竟是什么?如何使用进程和线程?什么场景下需要使用进程和线程?协程又是什么? 协程和线程的关系和区别有哪些? 程序切换-CPU时间的分配 首先,我们的任何一个程序都需要运行在一个操作系统中,如Windows XP,RedHat Linux,FreeBSD,AIX等; 其次,在操作系统中运行的程序,不止一个,而是成百上千个不同功能的程序,如键盘驱动,显示器驱动,HTTP服务, 游...

Juunnry的博客 368

Python爬虫基础讲解(十九):多进程简介

Python爬虫、数据分析、网站开发等案例教程视频免费在线观看 https://space.bilibili.com/523606542 Python学习交流群:1039649593 前面的文章讲了多线程,今天我们学习多进程 多进程的概念 在Python中,想要实现多任务可以使用多进程来完成。 进程的概念 进程(Process)是资源分配的最小单位,它是操作系统进行资源分配和调度运行的基本单位,通俗理解:一个正在运行的程序就是一个进程。例如:正在运行的qq,微信等他们都是一个进程。 .

Python案例分享,B站视频教程:https://space.bilibili.com/523606542 512
上一篇: python中第三方库xlrd和xlwt的使用教程
下一篇: Python线程讲解
Python程序u猿
博客等级 码龄5年 622粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值