当前位置: 首页 > news >正文

【Python】--实现多进程

import multiprocessing
import time
# 1.定义好函数
# codeing
def coding():for i in range(10):print(f'正在编写第{i}行代码')time.sleep(0.2)# music
def music():for i in range(10):print(f'正在听第{i}首歌曲')time.sleep(0.2)

单任务

# 单任务--时间为4s多
if __name__ == '__main__':t1 = time.time()coding()music()t2 = time.time()print(t2-t1)

使用multiprocessing库 使用多进程

# 多任务--时间为2s多
if __name__ == '__main__':t1 = time.time()# 创建子进程p1 = multiprocessing.Process(target=coding)p2 = multiprocessing.Process(target=music)# 启动子进程p1.start()p2.start()p1.join()p2.join()t2 = time.time()print(t2 - t1)

Process进程类的说明

  1. 导入进程包
    import multiprocessing
  2. 通过进程类创建进程对象
    进程对象 = multiprocessing.Process()
  3. 启动进程执行任务
    进程对象.start()

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

参数说明
group通常设置为 None,为将来扩展保留,目前无作用
target要在子进程中运行的函数(函数对象,而不是函数调用)
args传递给 target 函数的位置参数,必须是元组,哪怕只有一个元素也要加逗号,例如 (arg1,)
kwargs传递给 target 函数的关键字参数(字典)
name给进程取一个名字(可选),默认是 “Process-N”,N是编号
daemon设置为 True 时,表示该进程是守护进程,主进程退出时它也会退出。必须在 start() 之前设置

Process创建的实例对象的常用方法:

  • start():启动子进程实例(创建子进程) 让任务执行起来 [发动机]
  • join():等待子进程执行结束 ,阻塞主进程,防止子进程还没运行完,主进程结束,导致子进程结束

Process创建的实例对象的常用属性:

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

获取进程编号
获取当前进程编号

os.getpid() 表示获取当前进程编号

获取当前父进程编号

os.getppid() 表示获取当前父进程编号

import os
import time# 1.定义好函数
# codeing
def coding(name,num):for i in range(num):print(f'{name}正在编写第{i}行代码')time.sleep(0.2)print(f'coding现在的进程是{os.getpid()}')print(f'coding的父进程是{os.getppid()}')
# music
def music(name,count):for i in range(count):print(f'{name}正在听第{i}首歌曲')time.sleep(0.2)print(f'music现在的进程是{os.getpid()}')print(f'music的父进程是{os.getppid()}')# 多进程---时间为2s多
import multiprocessing
if __name__ == '__main__':t1 = time.time()# 创建子进程p1 = multiprocessing.Process(target=coding,name='a',args=('浩浩',5))p2 = multiprocessing.Process(target=music,name='b',kwargs={'name':'浩浩','count':8})# 启动子进程p1.start()p2.start()p1.join()p2.join()t2 = time.time()print(t2 - t1)
http://www.xdnf.cn/news/304111.html

相关文章:

  • 2.4线性方程组
  • 使用batch脚本调用另一个batch脚本遇到的问题
  • 【Linux网络编程十一】网络原理之数据链路层
  • 【HTML5】显示-隐藏法 实现网页轮播图效果
  • 【LDM】视觉自回归建模:通过Next-Scale预测生成可扩展图像(NeurIPS2024最佳论文阅读笔记与吃瓜)
  • 第七节:图像基本操作-图像属性获取 (尺寸、通道数、数据类型)
  • C++【STL】(1)string
  • 基于STM32、HAL库的W25X40CLSNIG NOR FLASH存储器驱动应用程序设计
  • 【Linux系统】线程安全
  • unix 详解
  • cuda多维线程的实例
  • 纷析云开源财务软件:重新定义企业财务自主权
  • 《Python星球日记》第35天:全栈开发(综合项目)
  • 基于 Flask的深度学习模型部署服务端详解
  • Linux 工具
  • docker + K3S + Jenkins + Harbor自动化部署
  • Opentack基础架构平台运维
  • iPhone或iPad想要远程投屏到Linux系统电脑,要怎么办?
  • react-12父子组件间的数据传递(子传父)(父传子)- props实现
  • Axure :列表详情、列表总数
  • Spring Boot 3.x集成SaToken使用swagger3+knife4j 4.X生成接口文档
  • 开源与商业:图形化编程工具的博弈与共生
  • ExtraMAME:复古游戏的快乐“时光机”
  • 信息论01:从通信到理论的飞跃
  • 第七章,VLAN技术
  • Github 2025-05-06Python开源项目日报 Top10
  • Kotlin与Java在Android生态中的竞争与互补关系
  • RT-Thread自用记录(暂定)
  • 第四章-初始化Direct3D
  • 餐饮部绩效考核管理制度与综合评估方法