Python高级编程语法——多任务:进程(二)

进程:一段程序运行起来后,系统会分配一定的资源给到这段程序,这段程序代码+分配到的资源,我们年称之为进程。

进程的状态:分为就绪、运行、等待三种状态。

就绪态:运行的条件都已经满足,正在等待cpu执行
运行态:cpu正在执行其功能
等待态:等待某些条件满足,例如一个程序sleep了,此时就处于等待状态

进程与线程一样,也是用来实现多任务的一种方式。

实现进程:

import multiprocessing

“函数1”
“函数2”

def main():
    p1 = multiprocessing.Process(target=函数1,args=(,))
    p2 = multiprocessing.Process(target=函数2,args=(,))
    p1.start()
     p2.start()
······

进程实现多任务的代码几乎与线程一样,只是模块名发生了改变,其他的参照线程即可。

在linux系统中,可通过终端命令查看系统正在运行的进程。

查看进程:

$ps -aux

结束进程:

$kil 进程PID

进程与线程:

1.可以实现多任务
2.先有进程,再有线程
3.一个进程中至少有一个主线程,反之亦然
4.线程是进程里面的多任务,即一段代码得到运行,分配了一定的资源,实现进程,再由线程去执行
5.线程不能独立运行,必须依存在进程中

通俗点说,进程是资源分配的单位,进程是操作系统调度的单位。它们之间的关系就好比电脑上运行的QQ,运行一个QQ就是一个进程,多个QQ就是多个进程,而QQ里面执行的如发送消息,接收消息,下载文件等命令就是线程。

实现进程间数据通信—Queue队列:遵循先进先出原则

创建Queue队列:

import multiprocessing

q = multiprocessing.Queue(3)   # 创建一个Queue队列对象,这个队列中最多允许放入3个数据

q.put(数据)   # 在队列中放入数据

q.get()   # 从队列中提取数据,提取数据遵循先进先出原则

if q.pull():  # 判断队列是否存满

if q.empty():  # 判断队列是否空了

注:Queue队列常用来解耦合。

进程池Pool:

创建进程池:

import multiprocessing

po = multiprocessing.Pool(3)   # 创建进程池对象,这个进程池中最多允许的进程数为3

每次循环将会用空闲出来的子进程去调用目标

po.apply_async(函数名,args)  # Pool().apply_async(要调用的函数,(传递给目标的参数元组,))

po.close()   # 关闭进程池,关闭后,进程池将不再接受新的请求

po.join()  # 等待进程池中所有子进程结束,必须放在close()语句后面
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值