当前位置: 首页 > 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)

相关文章:

  • FastComposer论文问题与解决
  • 信息论06:信息增益——量化不确定性的艺术与科学
  • STM32H743单片机实现ADC+DMA多通道检测
  • 匿名函数对编译错误的影响
  • day17 天池新闻数据KMeans、DBSCAN 与层次聚类的对比
  • SpringSecurity配合Thymeleaf实现详解,以及实战用例
  • 【计网】ipconfig、ping、arp、tracert
  • mysql中select 1 from的作用
  • 嵌入式MCU语音识别算法及实现方案
  • 自动生成 te.extern 接口:TVM 中第三方库的智能化接入方案
  • 达梦DM数据库安装步骤
  • GuassDB如何创建兼容MySQL语法的数据库
  • linux 如何防止内存碎片化?
  • 企业CMS中的内容中台是什么?
  • 【JS逆向基础】WEB基础
  • RN学习笔记 ✅
  • 如何将C#程序打包成软件绿色包
  • 快速学会Linux的WEB服务
  • 极新月报·2025.4人工智能投融资观察
  • 系统级编程(二):通过读取PE文件获取EXE或者DLL的依赖
  • 一网红被指涉脱衣殴打霸凌事件,沈阳警方:刑拘1人,处罚5人
  • 五一多城楼市火热:北京新房网签量同比翻倍,上海热门楼盘认购接连触发积分
  • 马上评|比起奇葩论文,更可怕的是“水刊”灰产
  • 世界羽联主席巴达玛:中国组织赛事的能力无与伦比
  • 苏杯登顶看到老将新人冲劲,国羽用冠军为奥运新周期开好头
  • 美航母撞船后又遇战机坠海,专家:长时间作战部署疲于奔命是主因