Python中的进程

Office Tool Plus:正版Office干净部署指南 Office部署是Windows新机配置的关键环节,涉及版本选择、架构匹配、语言支持与合规激活等基础技术问题。其核心原理基于微软官方Office Deployment Tool(ODT)的声明式XML配置机制,通过标准化流程确保安装可复现、可审计、无第三方捆绑。技术价值在于规避官网安装器的版本锁定、架构误配和语言缺失等常见风险,提升部署稳定性与安全性。典型应用场景包括企业批量部署、IT运维标准化、隐私敏感型用户自主安装。本文以Office Tool Plus为实践载体,深入解析ODT底层逻辑、XML配置规范 阅读详情

Python中的进程

1、单任务和多任务
  • 单任务:一次做一件事件,前一件事情做完,才开始下一件事情
  • 多任务:同时做多件事情,多件事情可以同时处理。
2、单核CPU的多任务
  • 时间片:CPU执行时间分割成小段
3、并行和并发
  • 并行:m个任务在m个处理器运算核心上执行
  • 并发:m个任务在n个处理器运算核心上执行,m>n
4、程序和进程
  • 程序:存放代码的可执行文件,静态的
  • 进程:运行中的程序,进程需要相应的系统资源:内存、时间片、pid。动态的
5、fork

​ Python中的OS模块封装了常见的系统调用,可以使用OS模块中的fork()方法来创建新的进程

  • fork只能在linux/unix系统中使用,windows中是不可以的
  • 当程序执行os.fork()时,系统会创建出一个新的进程(子进程),然后复制父进程中的所有内容到子进程中。
  • 父进程、子进程都会从fork()函数中得到一个返回值。
    • 父进程,得到子进程的pid
    • 子进程,得到返回值0
import os


def main():
    pid = os.fork()

    if pid > 0:
        print("父进程---Hello")
    elif pid == 0:
        print("子进程---world")


if __name__ == "__main__":
    main()

​ 运行结果:

父进程---Hello
子进程---world
6、多进程中的全局变量
import os

import time

num = 10
# 全局变量在多进程中,每个进程拥有的数据(包括全局变量)各有一份,是互不相关的
# 在父进程中,我们通过global改变了全局变量num的值,但是在子进程中,还是之前没有改变的num的值


def sing():
    global num
    for temp in range(3):
        print("----sing--num:%d---pid:%d--ppid:%d" % (num, os.getpid(), os.getppid()))
        num += 1
        time.sleep(1)


def dance():
    for i in range(3):
        print("------dance--num:%d--pid:%d,ppid:%d" % (num, os.getpid(), os.getppid()))
        time.sleep(1)


def main():

    pid = os.fork()

    if pid > 0:
        sing()
    elif pid == 0:
        dance()

if __name__ == "__main__":
    main()

​ 运行结果:

----sing--num:10---pid:32922--ppid:20979
------dance--num:10--pid:32927,ppid:32922
----sing--num:11---pid:32922--ppid:20979
------dance--num:10--pid:32927,ppid:32922
----sing--num:12---pid:32922--ppid:20979
------dance--num:10--pid:32927,ppid:32922

​ 总结:

在多进程中,每个进程中有的数据(包括全局变量),各有一份,在父进程中通过global改变了全局变量,在子进程中全局变量还是之前的值,不会改变。

父进程、子进程执行的顺序是没有规律的,完全取决于操作系统的调度算法

7、getpid和getppid
  • os.getpid(): 获取当前进程的pid
  • os.getppid(): 获取当前进程父进程的pid,即ppid
8、使用Process创建多进程

​ 上面提到os.fork()不能在Windows下运行,那么既然说Python是一门跨平台的语言,那我们怎么在Windows平台下使用多进程呢?答案就是使用Process。

​ 使用Process创建多进程的流程:

  • 首先导入Process

    form multiprocessing import Process

  • 创建一个Process对象

    p = Process() # 参数等会结合Demo讲解

  • 启动进程

    p.start() # 进程不启动,没有pid,但是会有进程名

  • 结束进程

    p.terminate()

    p.join() # 导致父进程阻塞,等待子进程结束,并回收资源

  • 创建Process对象时,可传递的参数:

    p = Process(target=XXX, args=(元组), kwargs={key:value})

    target = XXX 指定的任务函数

    args = (元组) 、kwargs={key:value} 给任务函数传递的参数

  • 判断进程是否在运行了

    p.is_alive() # True表示在运行 False表示未运行

    Demo

    import os
    from multiprocessing import Process
    
    
    def myTask():
    for i in range(5):
        print("子进程进程:%d --------%d" % (os.getpid(), i))
    
    
    def main():
    
    print("父进程:%d" % os.getpid())
    
    # 创建一个进程
    
    p = Process(target=myTask)
    
    
    # 启动进程
    
    p.start()
    
    # 阻塞父进程,等待子进程结束,并回收哦资源
    
    p.join()
    
    if __name__ == '__main__':
    main()
    
9、Process语法结构

​ Process([group [, target [, name [, args [, kwargs]]]]])

  • target:表示这个进程实例所调用的对象

  • args:表示调用对象的位置参数元组

  • kwargs:表示 调用对象的关键字参数字典

  • name:为当前进程实例的别名

  • group:大多数情况下用不到

    Process类的常用方法:

  • is_alive():判断进程实例是否还咋执行

  • join(timeout):是否等待进程实例执行结束,或等待多少秒

  • start():启动进程实例(创建子进程)

  • run():如果没有给定target参数,对这个对象调用start()方法,就将执行对象中的run()方法

  • terminate():不管任务是否完成,立即终止

    Process类常用的属性:

  • name:当前进程实例别名,默认名为Process-N,N为从1开始递增的整数

  • pid:当前进程实例的Pid值

10、使用Process子类创建进程

​ 这就关系到了之前的面向对象中的继承,我们来写程序,来使用 Process的子类来创建进程。

​ Demo:

import os
from multiprocessing import Process

import time

"""
    Process类本身也有__init__方法,这个子类相当于重写了这个方法
    但是这样有一个问题,我们并没有完全的初始化一个Process类,所以就不能从这个类中继承一些方法和属性
    最好的方法就是在__init__方法中奖继承类本身传递给Process.__init__方法,完成初始化操作
"""


class MyProcess(Process):
    def __init__(self):
        Process.__init__(self)

    def run(self):
        """要执行的任务代码写在run方法中"""
        for i in range(5):
            print("子进程:%d,正在运行。。。%d" % (os.getpid(), i))
            time.sleep(1)


def main():
    print("父进程:%d,正在运行。。。" % os.getpid())
    p = MyProcess()
    p.start()
    p.join()


if __name__ == '__main__':
    main()

​ 运行结果:

父进程:16836,正在运行。。。
子进程:13432,正在运行。。。0
子进程:13432,正在运行。。。1
子进程:13432,正在运行。。。2
子进程:13432,正在运行。。。3
子进程:13432,正在运行。。。4
反激电源及其变压器计算与绕制 本内容以一个宽电压输入 24V3A 输出的 72W 反激电源为例来计算电路的各个参数和器件选型,包含反激变压器的计算与绕制方法。 阅读详情

相关推荐

从MC到DC:三维重建算法的核心原理与实战对比

本文深入对比了三维重建领域两大经典算法Marching Cubes(MC)与Dual Contouring(DC)的核心原理与实战表现。MC算法原理直观、实现简单,但存在特征丢失和二义性问题;DC算法通过求解二次误差函数(QEF)和利用法向量信息,能更好地保留模型的尖锐特征,但计算更复杂。文章结合医学影像处理实例,为开发者根据速度、精度和特征保真度需求选择合适算法提供了清晰指南。

weixin_29251131的博客 1036

Python中的os.fork()详解

python中使用os模块中的fork创建新的进程 以下代码的测试版本均为python2.7.5 python运行时产生的进程 在我们运行python程序的时候,系统会生成一个新的python进程。新建一个python文件vim test.py 下面为测试代码: # -*- coding: utf-8 -*- import time time.sleep(20) 因为在pytho...

宇宙无敌大帅锅 3万+

2026年AI编程工作流实战:Claude Code与Open Code深度对比

AI编程已从代码生成工具升级为IDE级智能工作流核心能力。其本质是将大语言模型深度嵌入开发环境,通过语义理解、上下文感知与行动闭环重构传统编码范式。Claude Code以企业级知识图谱和双轨Code Review为代表,强调合规性、可审计与深度集成;Open Code则依托Skill可组合性、本地优先模型与ocp协议,实现开源驱动的灵活扩展。二者共同推动IDE从‘编辑器’进化为‘数字搭档’——能理解RFC文档、记住PR评论、自动补全带重试的fetch逻辑,并在Promise链发呆时一键重构为async/a

weixin_33739523的博客 470

python中os.fork()方法

在Python中,如果我们希望并发的执行一些任务,最简单的办法是使用os下面的fork()方法,例如 import os print("OSFork") contentStr = 'hello' pid = os.fork() if pid == 0: contentStr = contentStr + ' child' print(contentStr) else: contentStr = contentStr + ' parent' print(content

柿子树 2021

yolov11使用记录(训练自己的数据集)

本文介绍了如何安装和使用Ultralytics YOLOv11进行目标检测。首先,通过Anaconda创建并激活虚拟环境,安装必要的依赖库如PyTorch和Ultralytics。接着,从GitHub下载YOLOv11源码,并在PyCharm中配置环境。下载预训练的YOLOv11模型后,通过编写简单的Python脚本进行图片检测,验证环境配置的正确性。最后,文章提到可以基于此环境训练自定义模型。整个过程涵盖了从环境搭建到模型应用的完整流程,适合初学者快速上手YOLOv11。

IT菜鸟 7549

2024年11月架构设计师案例分析真题回顾,附参考答案、解析及所涉知识点(二)

软考高级系统架构设计师考试包含三个科目:信息系统综合知识、案例分析和系统架构设计论文。考试形式为机考。本文主要回顾2024年下半年(2024-11-10)系统架构设计师考试上午第二科案例分析的题目,同时附带参考解答、解析和所涉知识点。

一几文的编程学习笔记。 1664

python 通过psutil.Process判断进程是否已运行

psutil.Process可以用来判断某个进程是否存在,当进程存在时,可以获取进程的相关信息,当不存在时,执行psutil.Process(id)会产生异常 import psutil import time import sys if __name__ == '__main__': try: parent = psutil.Process(1200)# proName = parent.name() print(pr

weixin_43989195的博客 5052

vue3:html2canvas+jspdf将页面以A4导出为PDF文件,解决内容截断+在分页处截断问题详细排查和解决教程(jsPDF + html2canvas A4分页截断、内容分页时存在截断)

html2canvas + jsPDF 解决内容截断问题,vue3 jspdf-html2canvas生成多页pdf防截断处理(包含代码),vue3解决html2canvas + jsPDF导出pdf分页内容截断问题,jsPDF + html2canvas A4分页截断 完美解决方案(含代码 + 案例),html页面导出pdf截断问题,html2canvas 与 jspdf 相结合生成 pdf 内容被截断的终极解决方案,提供html2canvas+jsPDF将HTML页面以A4纸方式导出为PDF后,内容分页

✅ 精选推荐文章 2246

Python进程(多任务)的理解和使用,看这篇就够了

总结了Python中线程的定义和使用方式以及注意事项

eternal的博客 1231

RK3588嵌入式AI工业部署:YOLOv11 + OpenCV实时推理系统全栈实现

接下来,你可以尝试优化模型(如量化、剪枝)、扩展功能(如多摄像头推理、结果上传到云端),让你的AI应用更加完善。不需要担心技术门槛,我们会一步步带你完成环境搭建、模型转换、部署推理的全流程,最终让你在RK3588上体验AI目标检测的丝滑快感。首先,我们需要把YOLOv11的PyTorch模型(.pt格式)转换成ONNX格式,这是模型部署的第一步。此时,你应该能看到摄像头画面中出现了实时的目标检测框,标注着检测到的物体类别和置信度。文件,这就是RK3588可运行的模型文件。文件,这就是转换后的ONNX模型。

LXY_LOVE36的博客 246

RabbitMQ高级特性 - 生产者消息确认机制

为了保证信息 从生产者 发送到 队列,因此引入了生产者的消息确认机制.通过事务机制实现.通过发送确认机制(confirm 和 return)实现.因为事务机制比较消耗性能,在实际工作中用的也不多,因此这里主要介绍confirm 和 return机制来实现发送放的确认.a)confirm 确认模式如上图,confirm 确认模式主要保障于 生产者 到 交换机 的消息可靠性.如果 Exchange成功收到消息,那么 ConfirmCallback 这个回调 ack 参数就为true。

CYK_byte的博客 1886

如何在 Python 中使用多进程实现多个任务的并行处理?

使用Python的multiprocessing模块,可以轻松地实现多任务并行处理,大幅提升程序的执行效率。 通过创建独立的进程,每个进程都有自己的Python解释器和内存空间,Python程序可以有效绕过GIL限制,实现真正的并行计算。

Stayhungry,Stayfoolish. 4239

把核心变干净的代价与回报:为什么推动 Clean Core,几乎绕不开 SAP Integration Suite 与 API Management

Clean Core的核心价值在于构建可持续升级的ERP系统架构,其关键不在于减少代码或限制扩展,而是通过解耦和治理实现系统边界的清晰划分。这一理念将推动企业从传统的"私搭乱建"式集成向平台化工程转型,而SAP Integration Suite和API Management正是实现这一转型的核心组件。 Integration Suite作为集成中枢,通过统一平台、可复用内容库和事件驱动架构,将碎片化连接转变为标准化能力;API Management则负责建立接口治理体系,通过统一入口、

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 245

Python中的进程是什么?

在上面的示例中,我们首先定义了一个`task`函数,然后使用`multiprocessing.Process`类创建了5个进程,并分别启动它们。同时,也欢迎读者进一步深入学习进程相关的知识和技术,从而在实际的项目中运用进程并发执行的能力,提高程序的处理能力和效率。本文将从Python的角度解释进程的概念及其在Python编程中的重要性,以便帮助读者更好地理解和运用进程的概念。在上面的示例中,我们创建了一个队列`q`,并将其作为参数传递给两个不同的进程函数`sender`和`receiver`。

m0_70911440的博客 1695

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Python中的进程和线程

Python中的进程和线程 一.进程的概念 一个正在运行的程序或者软件就是一个进程,它是操作系统进行资源分配的基本单位,也就是说每启动一个进程,操作系统都会给其分配一定的运行资源(内存资源)保证进程的运行。 注意: 一个程序运行后至少有一个进程,一个进程默认有一个线程,进程里面可以创建多个线程,线程是依附在进程里面的,没有进程就没有线程. 并行:多个cpu同时处理多个程序 并发:一个cpu在一个很小的时间段之内在多个程序之间来回切换执行,切换的时间由操作系统决定,但时间比较小 进程的作用: 单进程效果图:

Lonely_Fishes的博客 1466

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

python中多进程终止_Python中的多进程

由于cPython的gill,多线程未必是CPU密集型程序的好的选择。多线程可以完全独立的进程环境中运行程序,可以充分利用多处理器。但是进程本身的隔离带来的数据不共享也是一种问题,线程比进程轻量级。1、Multiprocessingimport multiprocessingimport datetimedef calc(i):sum = 0for _ in range(10000000):sum...

weixin_32824625的博客 1896

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

python 进程_python中的进程

什么是进程?进程是系统中正在运行的一个程序,程序一旦运行就是进程。比如pc上运行的qq、微信就是一个个的进程。进程可以看成程序执行的一个实例。进程是系统资源分配的独立实体,每个进程都拥有独立的地址空间。一个进程无法访问另一个进程的变量和数据结构,如果想让一个进程访问另一个进程的资源,需要使用进程间通信,比如管道,文件,套接字等。一个进程可以拥有多个线程,每个线程使用其所属进程的栈空间。p...

weixin_39938165的博客 70

Python中的多进程与进程池

Python中的多进程与进程池 文章目录Python中的多进程与进程池1.multiprocessing类2.multiprocessing.Pool进程池构造方法常用方法多进程,多线程的选择应用Linux的特殊进程僵尸进程孤儿进程守护进程 1.multiprocessing类 方法 含义 current_process() 获取当前进程对象类似于threading.current...

兰枫 2279

Python 中的多进程

本文简要而简洁地介绍了Python编程语言中的多进程。 什么是多进程?为什么选择多进程?python中的多进程是如何实现的,以及模拟多进程运行方式的方法

a883774913的博客 1874

python中的守护进程、僵尸进程、孤儿进程

孤儿进程(Orphan Process)是指在Unix-like系统中,父进程在其子进程结束之前退出或终止了,而这些子进程还在运行的情况。当父进程终止后,所有未终止的子进程将被init进程(PID为1的特殊系统进程)接管。守护进程(Daemon Process)是一种在后台运行的特殊类型的进程,它独立于控制终端,并且周期性地执行某种任务或等待处理某些事件。在操作系统中,僵尸进程(Zombie Process)是指已经完成执行(终止)但仍然有一个记录存在进程表中的进程。但是并不会造成真正的僵尸进程的出现。

瑞瑞的博客 1740

Python中的协程、线程和进程

协程、多线程和多进程都是实现程序并发执行的方法,不过它们在工作方式和适合的应用场景上存在一些区别。

NLP工程化 2142

【Python】Python中的进程

什么是进程 (如果你有一定的基础,可以跳过这一part) 在了解进程之前,我们需要先知道什么是多任务。多任务顾名思义,就是指操作系统可以执行多个任务。比如使用Windows操作系统我们可以同时聊天,看视频,上网浏览网页等。此时,操作系统就是在执行多任务,而每一个任务就是一个进程。Windows下我们同时按住ESC+Shift+Ctrl可以打开任务管理器,里面显示着现在正在执行的进程 进程(proc...

weixin_45434953的博客 214

python中的进程

阅读目录 进程:顾名思义,运行中的程序 一、创建进程的方式:(2种) 两种方式都是利用multiprocessing模块导入Process类来实现具体方法看代码 第一种: from multiprocessing import Process import time # 创建的子程序代码 def task(name): print('%s is running' % name) ...

weixin_42625143的博客 165
上一篇: 动态语言
下一篇: 进程池和进程之间的通信
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值