线程

生产者消费者模型

  生产者指的是能够产生数据的一类任务

  消费者是指对上面的数据的处理

  比如:让你打开一个文件查找某个词语,打开文件的过程叫生产者,查找的过程叫消费者

形成原因:生产者和消费者的能力不匹配. 会导致资源的浪费,这样我们就需要一个公共的存储数据的区域

解决方案: 1.创建2个进程 一个负责生产  一个负责消费(注意生产和消费的结束JoinableQueue)

         2.在用对列在存储需要共享的数据

线程thread

         在多进程中 开启子进程需要消耗大量的资源  所以主进程会先比子进程早执行

  子线程的开启速度比主进程快的多

  在多线程中 子线程可以直接访问主线程的内容

  多个线程之间是平等的   所以不存在父子关系

  在开发中 每当出现i/o阻塞  是比较耗时的操作

线程的属性

         Daemon 守护线程

         current_thread 当前线程

         active_count 当前运行的线程个数

         enumerate  枚举

         join

         Lock  Rlock(就算你的代码逻辑不对同一个线程多次对一个锁执行acquire也不会卡死)

         Semaphore  信号量

线程 和进程的区别

       进程是一个资源单位

       一个进程可以包含多个线程

      多个线程之间数据可以共享

      线程开销比进程小

      在多线程中CPU的切换速度会非常快 但资源消耗没有进程高

原文地址:https://www.cnblogs.com/zhouhai007/p/9936947.html