并发 : 遇到IO自动切换,能够提高效率的并发,分时:不一定能提高效率,只是让你的程序看起来在同时运行

 

并行:多个cpu的基础上,才有并行的概念,真正的同时在运行

 

进程三状态 : 就绪  运行  阻塞

 

同步异步:提交任务的方式:

 

 

 

异步 : 同时提交两个,两个任务都能够执行

 

同步:同时提交两个任务,但是两个任务排队执行,一个一个来

 

阻塞:程序遇到IO

 

非阻塞:不阻塞

 

异步非阻塞:*****  程序运行效率最高的

 

 

进程的两种创建方式:

From multiprocessing import Process

 

P = Process(target=f1,args=(i,))  kwargs={‘形参名’:}

p.start()

 

If __name__ == ‘__main__’:

创建进程的代码

 

继承process:

Class MyProcess(Process):

Def xxxx(self):

Print(‘来啦客官’)

 

Def __init__(self,n):

Super().__init__()

Self.n = n

Self.xxxx()

 

 

Def run(self):

Self.xxxx()

Main

P = MyProcess(‘xx’)

P.start()

 

Join: 主进程等待子进程执行结束,才从join的地方继续执行

P = MyProcess(‘xx’)

P.start()

P.join()

Print(主进程结束)

 

For循环创建进程

For i in range(10):

P = MyProcess(‘xx’)

  1. start()  #就是给操作系统发送了一个创建进程的信号,之后创建进程执行进程什么执行进程都是操作系统来管理的

 

 

今日内容:

进程的其他方法

进程id,进程名字,查看进程是否活着is_alive()  terminate()发送结束进程的信号

 

僵尸进程和孤儿进程(了解)

 

验证进程之间是空间隔离的

 

 

守护进程:(**)

 

进程锁(同步锁/互斥锁)  *****

Loc = Lock()

Loc.acquire()

需要锁的代码

Loc.release()

 

With loc:

需要锁的代码

 

生产者消费者模型

 

进程队列  ***** Queue()

Q = Queue(5)

Q.put()  #满了会等待

Q.get()  #没有数据了会等待

Q.qsize()

Q.empty()  不可靠

Q.full()不可靠  

Q.get_nowait()  #不等待,但是报错

Q.put_nowait()   #不等待,但是报错

 

Joinablequeue: