什么是进程? 就是为了形容执行中的程序的一种称呼 它是操作系统中资源分配的最小单位 进程之间是数据隔离的,占用操作系统资源相对多 独立存在的 谈谈对并发的理解? 同时有多个任务需要执行但是资源有限 所以我们会利用一些手段:多进程\多线程\协程来完成任务 来提高用户体验,达到多个任务在同一个时间段内同时执行的效果 什么是线程? 轻量级进程,直接被CPu调用,不能独立存在的轻量级进程 同一进程中的多个线程之间数据共享 你对GIL的理解? 全局解释器锁,是用来锁线程的,Cpython解释器提供的 导致了同一时刻只能有一个线程访问Cpu 是一个历史遗留问题 你对异步非阻塞的理解? 异步:一个任务的执行不需要等待另个任务的结束 非阻塞: 没有阻塞 设置非阻塞(socket对象调用setblocking(False)) 什么是协程? 协程是用户级的,对操作系统不可见 使用户为了提高一条线程对CPU的利用率才出现的概念 协程能实现一条线程上的多个任务相互切换 为了提高效率,用户可以控制协程在一个任务中遇到IO就切换另一个任务 协程和线程比起来? 协程不存在数据不安全问题 协程不能处分利用多核 但是线程在Cpython解释器下实际上也不能利用多核 所以相对来说,协程实际上在python中是更好的工具 什么是IO多路复用? 操作系统提供的代理,监听网络对象的IO操作 常见的IO多路复用机制? select:轮询的方式获取每个对象的状态 poll:底层数据结构与select不同,进行了优化,能够储存更多的对象,也是轮询的方式 epoll:不采用轮询的方式来获取每个对象的状态,而是采用回调函数的方式, 所以wait for data 阶段 一收到数据就可以立即通知应用程序 提高了效率,也减轻了操作系统的负担
原文地址:https://www.cnblogs.com/systemsystem/p/10119658.html
时间: 2024-11-05 22:53:41