【Python零基础入门篇 · 23】:进程的基础操作、进程间的通信-Queue、进程池的构建

目录

一、进程的基础操作

1、进程的概念

2、进程的状态

3、进程的创建

4、进程的语法结构

导入模块

Process类的相关参数

5、常用的方法和属性

常用方法

常用属性

6、进程间不共享全局变量

二、进程间的通信-Queue(队列)

1、队列的基本操作      

三、进程池的构建

1、概念

2、方法


一、进程的基础操作

1、进程的概念

概念:一个程序运行起来后,代码+用到的资源,称为进程,是操作系统分配资源的基本单位。

2、进程的状态

  • 就绪态:正在等CPU执行
  • 执行态:CPU正在执行其功能
  • 等待态:等待某些条件满足,例如一个程序sleep了,此时就处于等待态

3、进程的创建

multiprocessing模块就是跨平台版本的多进程模块,提供了一个Process类来代表一个进程对象,这个对象可以理解为是一个独立的进程,可以执行另外的事情。

4、进程的语法结构

  • 导入模块

from multiprocessing import Process
  • Process类的相关参数

target:调用对象,子进程要执行的任务

args:以元组的形式传值

kwargs:以字典的形式传值

5、常用的方法和属性

  • 常用方法

子进程.start():开启子进程

子进程.is_alive():判读子进程是否还活着

  • 常用属性

子进程.name:当前进程的别名

子进程.pid:当前进程的进程号

6、进程间不共享全局变量



二、进程间的通信-Queue(队列)

可以使用multiprocessing模块的Queue实现了进程之间的数据传递,Queue本身是一个消息队列。

初始化Queue()对象时(例如:q=Queue()),若括号中没有指定最大可接收的消息数量,或数量为负值,那么就代表可接受的消息数量没有上限(直到内存的尽头);  

1、队列的基本操作      

  • Queue.put():入队,放入数据
  • Queue.get():出队,取出数据
  • Queue.size():返回当前队列包含的消息数量
  • Queue.empty():如果队列为空,返回True,反之False ;         
  • Queue.full():如果队列满了,返回True,  反之False。

进程操作队列,直接使用进程自带的Queue



三、进程池的构建

当需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态成生多个进程,但如果是上百甚至上千个目标,手动的去创建进程的工作量巨大,此时就可以用到multiprocessing模块提供的Pool方法。

初始化Pool时,可以指定一个最大进程数,当有新的请求提交到Pool中时,如果池还没有满,那么就会创建一个新的进程用来执行该请求;但如果池中的进程数已经达到指定的最大值,那么该请求就会等待,直到池中有进程结束,才会用之前的进程来执行新的任务。

1、概念

定于一个进程池,在里面放上固定数量的进程,有需求就拿池子中的进程来处理任务,处理完毕,进程并不关闭,而是将这个进程再放回池子中继续等待任务。

2、方法

  • p.apply_async(调用的目标,传递的值)——异步非阻塞,不同等待当前进程执行,随时根据系统调度来进行程序切换,如果异步提交任务,等进程池内任务处理完,需要用get()来收集结果.
  • p.close()——关闭进程池
  • p.join()——主进程阻塞,等待所有工作进程退出,只能再close()后调用

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

街 三 仔

你的鼓励是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值