进程

Process

并发 / 并行

并发: 同一时间段内 多个任务交替使用同一个CPU

并行: 同一时刻 多个任务在不同的CPU上同时运行

同步/异步

同步:调一个任务,等待这个任务返回结果,才能继续执行其他代码

异步:调一个任务,不等待这个任务 ,

阻塞/非阻塞

阻塞:在当前这个任务中 CPU不工作 空闲

非阻塞:CPU工作 为当前程序提供服务

Start 异步非阻塞

Terminate  异步非阻塞

Join 同步阻塞

Join(限定等待时间)

Process模块提供给我们的 对子进程同步管理的方法

 

 

开启进程Process

实例化 的时候引用的参数: target = 函数名,args=(fruit,)

方法: start 开启进程 terminate 结束进程  join 等在子进程结束

属性:

Name 进程名 pid进程id

Daemon 一定要在start之前设置 设置一个子进程为守护进程,守护进程在主进程的代码结束之后结束

用类的方式开启子进程:

 

 

IO操作

I  input 输入 输入到内存

O output 输出 从内存往外(网络 硬盘 数据库等)输出

 

 

 

队列

 

多个进程之间的数据是隔离的

 

进程之间的数据交互是可以通过网络/文件来实现的

 

Socket来实现的

 

 

 

也叫IPC-->inter process communication  进程之间的通信

 

通过python的模块实现的

 

基于原生socket

 

基于进程队列的  *****

 

通过第三方软件/工具来实现: 基于网络

 

自己写的代码少 新能好 但是需要安装

 

消息中间:

 

 

 

生产者 消费者模型:

 

获得数据:生产者

 

处理数据:消费者

 

调节生产者的个数或者消费者的个数来让程序的效率达到最平衡和最大化

 

解耦的思想

 

 

 

Producer 生产者

 

Consumer 消费者

 

供大于求

 

 

 

同一时刻同一段代码,只能有一个进程来执行过这段代码

 

保证数据安全

 

多进程中,只有去操作一些进程之间可以共享的数据资源的时候才需要进行加锁

 

Lock = lock()

 

Acquire release

 

With lock:

 

Lock  互斥锁

 

ipc

 

队列

 

Put

 

Get

 

生产者 消费者模型

 

基于队列把生产者和消费者的过程分开

 

补充:

 

队列 是进程安全的

 

队列 自带了锁 每次都带lock

 

基于什么实现的

 

基于文件家族的socket 通信完成的

 

上面服务实现ipc机制不止队列一个,管道pipe

 

队列 == 管道+

 

管道 是基于文件家族的socket服务实现的

 

 

 

 

 

 

 

纯概念:

 

: lock    lock.acquire()  获取锁

 

     Lock.release()  释放锁

 

锁的应用场景: 当多个进程需要操作同一个文件

 

 

 

队列: 进程之间的通信

 

posted @ 2019-04-16 15:04  .如影随行  阅读(106)  评论(0编辑  收藏  举报