并发主干内容回顾
并发主干内容回顾进程:一个程序运行起来,资源集合. 开启进程的过程:操作系统开辟一个内存空间,把代码放进去,去运行代码(需要cpu). ps:(如果是python的话会把解释器代码也放进去) 特点:
multiprocessing重要用法:
生产者消费者模型(一种思想)生产者只负责生产,消费者只负责消费,彼此都达到了自己最大的效率. 生产者-->队列(盆)--->消费者 线程cpu真正的执行单位是线程 python里使用的线程是操作系统的原生线程. 在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程,cpu真正的执行单位是线程. 线程和进程的关系进程相当于线程的容器 进程 = 各种资源+线程 产生一个线程的过程:每开启一个进程就会自带一个线程,也可以通过代码调用操作系统开启线程,代码执行完了线程结束了. 论述进程和线程
threading 的重要用法:
python的多进程vs多线程大前提要知道:python的多线程无法利用多核优势实现并行,只能实现并发. io密集型 适合用python的多线程处理. 计算密集型 适合用python的多进程处理. 进程池线程池:池的功能限制进程数或线程数. ? 什么时候限制? 当并发的任务数量远远大于计算机所能承受的范围,即无法一次性开启过多的任务数量,我就应该考虑去限制我进程数或线程数,从保证服务器不崩. 协程: 单线程下实现并发什么样的协程才有意义? 只有遇到io切换才有意义. 优点: 应用程序控制切换要比操作系统控制切换快的多 缺点: 协程跟多线程比 如果一个任务io了没有切换,其他的任务都要等这个任务io结束 协程跟多进程比 无法利用多核优势. 为什么要有协程( 遇到io切换的协程) ? 协程概念本质是程序员抽象出来的,操作系统根本不知道协程存在,也就说来了一个线程我自己遇到io,自己会在内部切换任务,操作系统跟本发现不了我发生了io,也就是实现了单线程下效率最高. 真实的情况是 多进程下开多线程,多线程下开协程(程序员自己控制的) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |