CSIC_716_20191207【并发编程---进程与线程】

僵尸进程与孤儿进程

守护进程,

from Multiprocessing  import Process

在 suboprocess.start( ) 的上一行,增加 subprocess.deamon( ),创建守护进程。当主进程执行完成时,subprocess也会被强制结束。

进程之间是相互独立的,主子两个进程在执行时,数据是隔离的。

进程互斥锁:

from Multiprocessing import Lock

lock = Lock( )

lock.acquire( )  #加锁

lock.release( )  #释放锁

进程互斥锁是为了保证数据的读写安全。避免并发造成数据的错乱。

队列

队列可以使得进程之间的数据可以交互。

队列遵循先进先出(FIFO)的原则.

python中可以使用队列的三种方法

from multiprocessing import Queue
from multiprocessing import JoinableQueue  # 基于Queue封装的
import queue  # 内置的队列

q_obj = Queue(count)  # 对应 import Queue,规定队列中能存放几个值,count为数量
q_obj = JoinableQueue(count)  # 对应 import JoinableQueue
q_obj = queue.Queue(count)  # 对应 import queue,以上三种方式,三选一。

q_obj.put_nowait(args)  # 给队列中增加值,如果队列中满了,就会报错
q_obj.put(args)  # 给队列中增加值, 如果队列满了,就会阻塞等待

q_obj.get_nowait()  # 从队列中取值,如果取不到值,就会报错。
q_obj.get()  # 从队列中取值,如果取不到,就会阻塞等待

  

 IPC机制    Interprocess conmunication 进程间通信,在产生子进程时,将队列作为参数传入

生产者和消费者模型    基于队列,在producer 和consumer之间交互信息。

猜你喜欢

转载自www.cnblogs.com/csic716/p/12003175.html