5.1 线程进程与多线程
1.进程
资源是稀缺的,进程是竞争计算机资源的基本单位。
一台计算机至少要有一个进程。
单核CPU用眼只能执行一个应用程序吗?No,他可以在不同的应用程序直接进行切换。由于切换的时间非常短,短到人类无法感知到,所以造成了一种假象,一个进程可以同时执行多个进程。
多核CPU可以真正意义上的同时运行多个进程。
切换进程是计算机的一个最重要的功能-进程调度。每个算法有自己不同的操作系统来决定每个应用程序何时挂起,并切换到另一个进程。
进程/线程直接的切换,对资源的开销非常大。所以这是设计一个应用程序的关键。
操作系统在将一个进程切换到另一个进程的时候,会保存当前进程的状态,这个状态叫上下文。
2.线程
对于计算机编程来说,线程的重要性要远高于进程,一个进程可以有多个线程。
线程产生的原因:现在CPU的运行速度非常快,用进程来管理资源粒度太大了,不能够有效充分的利用CPU的高性能,所以需要一个更小的单元来管理和使用CPU的资源。
线程比进程更加灵活小巧轻量,并且切换线程的开销要比进程小很多的,这能让我们在单位之间内处理更多的事情。
线程进程分工不同,进程负责分配资源,如内存资源;线程利用CPU执行代码(代码落在计算机最底部,是一条条的指令,由CPU来执行,指令是需要资源才能完成他的功能的)
线程不管理和持有资源,但是他可以访问进程的资源来完成功能。
3.多线程
每段代码执行起来,都会有一个进程,并且会分配一个默认的线程,成为主线程
可以通过python内置threading来操作线程
多线程编程的好处:更加充分的利用CPU的性能优势。可以将不同的线程运行在不同的核里。
多线程只是看起来是多个线程同时执行,实际上是交替执行,只是交替的实际非常短。
多线程编程是异步编程:1.主线程完全不知道其他线程的存在。2.主线程不依赖其他线程的执行结果。
Last updated