1、cpu与进程关系
单核CPU每次只运行一个进程,8核cpu每次运行8个进程
2、如何查看进程:
window系统--任务管理器--进程--里面每一项都是一个进程
linux系统 ps -ef
3、什么场景使用多线程
需要并发处理的场景
- 性能测试
- 网络爬虫
- 功能测试框架的并发执行
- 多目录大文件的信息统计
- 服务器端编程
4、同步和异步
同步与异步针对的是函数/任务的调用方式:同步就是当一个进程发起一个函数(任务)调用的时候,一直等到函数(任务)完成,而进程继续处于激活状态。而异步情况下是当一个进程发起一个函数(任务)调用的时候,不会等函数返回,而是继续往下执行当,函数返回的时候通过状态、通知、事件等方式通知进程任务完成。
总结来说,请求发出后,是否需要等待结果,才能继续执行其他操作。
5、阻塞和非阻塞
阻塞与非阻塞针对的是进程或线程:阻塞是当请求不能满足的时候就将进程挂起,而非阻塞则不会阻塞当前进程
总结:同步执行一般都会有阻塞,但也有可能没阻塞;异步执行也有可能有阻塞,也可能没有阻塞。
6、同步阻塞、同步非阻塞,异步阻塞、异步非阻塞。
- 同步阻塞: 老张把水壶放到火上,就坐在那里等水开,开了之后我再去看电视
- 同步非阻塞:实际上是效率低下的。因为老王需要不断的在看电视与烧水之间来回跑动,看一下电视,又要去看一下水烧开 没有,这样来回跑很多次,在程序中,程序需要在这两种不同的行为之间来回的切换,效率可想而知是低下的。
- 异步阻塞:老张把响水壶放到火上,然后就坐在旁边等着听那个烧开的提示音
- 异步非阻塞:老张把响水壶放到火上,去客厅看电视,水壶响之前不再去看它了,响了再去拿壶。
四种总结:
同步阻塞形式:效率是最低的。拿上面的例子来说,在烧水的过程中,什么别的事都不做。
同步非阻塞形式:实际上是效率低下的。因为老王需要不断的在看电视与烧水之间来回跑动,看一下电视,又要去看一下水烧开 没有,这样来回跑很多次,在程序中,程序需要在这两种不同的行为之间来回的切换,效率可想而知是低下的。
异步阻塞形式:异步操作是可以被阻塞住的,只不过它不是在处理消息时阻塞,而是在等待消息通知时被阻塞。
这个效率其实跟同步阻塞差不多的。
异步非阻塞形式:效率更高。因为老王把水烧好之后就不用管了,可以安安心心去看电视,不用来回奔波看水烧开了没,因为 水烧开了会有提示告诉他水烧好了,这样效率岂不是更高。
7、 实现多任务的方式
- 多进程模式
- 多线程模块
- 协程
8、三者之间的关系
进程》》线程》》协程
9、进程和线程使用场景
进程:用于计算密集型
线程:耗时操作,爬虫,IO