python第11次习题

1、理解并简述并发与并行

并发:同时处理多件事情,一段时间内有N多个事情需要处理,强调某个时间段的数量;
(同一时间有大量的请求需要进行处理,这个时候就叫高并发)

并行:同一时刻同时处理多件事情,互不干扰;强调的是同时处理多件事情;
(同一时刻可以同时处理N个请求)

比如双11期间,某个仓库每天都有大量的货物过来需要发出去,每天都有大量货物过来就可以理解为高并发;

而有N多个工作人员同时进行发货,这多个工作人员就可以理解为并行;

并行与并发的联系:

1、并行是解决高并发的一种手段;

2、并行可以使用多进程/多线程;

2、 理解线程与进程,并说明它们的应用场景

概念

  • 程序:相当于在磁盘上的代码,当执行后,加载到内存中,形成进程;

  • 进程:是运行在内存中的一段代码,当一个程序需要运行的时候,操作系统会将磁盘上的源代码加载到内存,形成一个或者多个进程;

    操作系统会为进程分配一段连续的内存空间,以及PID等,会实时监控这个进程的状态;比如占用了多少CPU,占用了多少内存;

    进程是线程的容器,线程是操作系统能够运行调度的最小单位;

  • 线程:是程序执行的最小单位,线程中有ID,指针,堆、栈等;

在一个程序运行时,可以有多个进程,在每个进程中会有多个线程(进程与进程、线程与线程彼此独立),在多个线程中跑相关的代码(加载相关的源代码),等待CPU的调度计算;一个CPU在同一时间片只能跑一段代码,当这个代码跑完以后继续下一个,如果代码没跑完,线程进入ready状态等待再次调度,指针指向最后运行的地方,下一次调度这从这个指针往后;

线程的状态:

在这里插入图片描述

1、创建线程----进入就绪状态(等待调度)------CPU调度后进入运行状态(跑代码)----CPU时间片用完,继续进入就绪状态,等待下一轮调度-------直到跑完代码进入终止状态;

2、创建线程----进入阻塞状态(等待数据)------收到数据以后进入就绪状态(等待调度)----CPU调度后进入运行状态(跑代码)

在线程创建运行时,某个时刻是什么样的状态取决于代码,是否使用了阻塞方法来阻塞当前的线程;(socket.accept/newsock.recv/input函数等)

两者区别
1、进程是系统分配的基本单位,线程是CPU调度的基本单位;

2、同一进行下,多线程使用的内存地址空间时同一个;

3、不同的进程,内存地址独立;

多进程优缺点
1、多进程相对独立,不需要考虑锁和同步资源问题;
2、容错性,一个进程崩溃不会影响到其他进程以及其他进程中的线程;
3、进程创建创建的开销相对较大,需要更多的内存空间;创建的效率相对低;

多线程优缺点
1、多线程创建的开销小,创建速度快;
2、频繁切换线程的上下文切换的开销小;
3、多线程需要考虑锁的资源同步问题;

进程与线程的应用场景

多进程:nginx,有一个master进程负责接收请求,派发任务给worker进程
浏览器,比如打开多个页面,一个页面崩溃其他页面不受影响;

多线程:FTP服务器软件,多个线程处理多个用户请求;

3、Python中的GIL是什么,它影响什么

GIL即全局解释器锁,GIL 保证CPython进程中,只有一个线程执行字节码。甚至是在多核CPU的情况下,也只允许同时只能有一个CPU核心上运行该进程的一个线程;

一个核心上的一个进程同一时间片只允许有一个线程执行;如果是1核单进程的情况下,这个进程下的线程实际上是串行,一个一个的运行;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值