生产者消费者模型
生产者指的是能够产生数据的一类任务
消费者是指对上面的数据的处理
比如:让你打开一个文件查找某个词语,打开文件的过程叫生产者,查找的过程叫消费者
形成原因:生产者和消费者的能力不匹配. 会导致资源的浪费,这样我们就需要一个公共的存储数据的区域
解决方案: 1.创建2个进程 一个负责生产 一个负责消费(注意生产和消费的结束JoinableQueue)
2.在用对列在存储需要共享的数据
线程thread
在多进程中 开启子进程需要消耗大量的资源 所以主进程会先比子进程早执行
子线程的开启速度比主进程快的多
在多线程中 子线程可以直接访问主线程的内容
多个线程之间是平等的 所以不存在父子关系
在开发中 每当出现i/o阻塞 是比较耗时的操作
线程的属性
Daemon 守护线程
current_thread 当前线程
active_count 当前运行的线程个数
enumerate 枚举
join
Lock Rlock(就算你的代码逻辑不对同一个线程多次对一个锁执行acquire也不会卡死)
Semaphore 信号量
线程 和进程的区别
进程是一个资源单位
一个进程可以包含多个线程
多个线程之间数据可以共享
线程开销比进程小
在多线程中CPU的切换速度会非常快 但资源消耗没有进程高