38 线程
Posted zhuangdd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了38 线程相关的知识,希望对你有一定的参考价值。
回顾:
生产者消费者模型
主要为了解决强耦耦合的问题
队列
from multiprocessing import Queue
先进先出
队列本身是安全的
from multiprocessing import JoinableQueue
task_done() 每消费一个数据,就返回一个标识
join() 接收task_done返回的标识,以便可以知道队列中的数据什么时候被消费完了
管道(了解)
本身是不安全的
from multiprocessing import Pipe con1,con2 = Pipe()
con1可以收发数据,con2也可以收发数据(全双工)
队列 = 管道 + 锁
多进程之间共享内存数据:
from multiprocessing import Manager,Value
进程池
from multiprocessing import Pool p.map(func,iterable) p.apply(func,args=()) 同步的做任务 池中的进程是普通进程,不会跟随着主进程的结束而结束。 p.apply_async(func,args=(),callback=None) 异步,记得加上close和join close: 不再接受新的任务,准备关闭 join: 等待进程池中所有进程执行完毕任务。
池中的进程是守护进程,主进程的代码执行完毕,守护进程就结束了
在进程池中的回调函数是主进程调用的,和子进程无关。
以上是关于38 线程的主要内容,如果未能解决你的问题,请参考以下文章
JUC并发编程 共享模式之工具 JUC CountdownLatch(倒计时锁) -- CountdownLatch应用(等待多个线程准备完毕( 可以覆盖上次的打印内)等待多个远程调用结束)(代码片段