运维开发网

day 29

运维开发网 https://www.qedev.com 2020-07-25 15:32 出处:网络 作者:运维开发网整理
目录 网络编程(中) 网络编程(中) 进程间的通信(multiprocess.queue) 主要运用:队列; 生产消费 相当于内存中产生一个队列空间,可以存放多个数据,但数据的顺序是由先进去的排在前面的。 生产者与消费者 生产者:生产数据的 消费者:使用数据的 例子:通过队列,生产者把数据添加到队列中,消费则从队列中获取数据 线程基础 ==什么是线程== 线程与进程都是虚拟单位,目的是为了更好的描

目录

  • 网络编程(中)

网络编程(中)

进程间的通信(multiprocess.queue)

主要运用:队列; 生产消费

相当于内存中产生一个队列空间,可以存放多个数据,但数据的顺序是由先进去的排在前面的。

生产者与消费者

生产者:生产数据的

消费者:使用数据的

例子:通过队列,生产者把数据添加到队列中,消费则从队列中获取数据

线程基础

==什么是线程==

线程与进程都是虚拟单位,目的是为了更好的描述某种事物.

? 进程:资源单位

? 线程:执行单位

开启一个进程,一定会有一个线程,线程才是真正执行者.

==为什么使用线程==

节省内存资源

开启进程:

  1. 开辟一个名称空间,每开启一个进程都会占用一份内存资源.
  2. 会自带一个线程

开启线程:

  1. 一个进程可以开启多个线程
  2. 线程的开销远小于进程

注意:线程不能实现并行,线程只能实现并发,进程可以实现并行.

举例:内存就像一个工厂,子进程就像一个工厂车间,线程就像车间内的流水线.

GIL全局解释器锁

在多线程环境中,python虚拟机按以下方式执行:

  1. 设置GIL;
  2. 切换到一个线程去运行;
  3. 运行指定数量的字节码指令或者线程主动让出控制(可以调用time.sleep(0));
  4. 把线程设置为睡眠状态
  5. 解锁GIL;
  6. 再重复以上所有步骤.

让并发变成串行,牺牲了执行效率,保证了数据安全.

在程序并发执行时,需要修改数据时使用.

0

精彩评论

暂无评论...
验证码 换一张
取 消