线程与进程:
线程和进程通常都有一个主线/进程的负责分配任务和其他子线/进程负责执行任何。
多进程的优点在于一个子进程挂了,不会影响其他进程(主进程挂了就全挂了),但是其创建的代价较大,Apache采用的就是多进程机制;
而多线程一般要比多进程执行效率要高,但是由于共享内存一旦子线程挂了,就全挂了,ISS采用的就是多线程机制。
计算密集型 IO密集型
计算密集型任务主要消耗大量CPU资源,不停进行计算。由于依靠CPU性能,一直占用CPU进行计算,也就说一般情况下能够采用多任务的数量等于CPU核心数。该种任务C语言比较胜任。
IO密集型任务(磁盘读取,web服务)主要需要IO的读取,利用CPU的效率较低,大量时间花费在IO上。由于现在有异步IO技术,也就是说一个任务在IO等待时间时可以暂停运行,让CPU的空闲时间用来运行其他任务,等到IO读取完毕后在继续执行。从而实现单核CPU上运行单进程却能实现多任务的并发。该种任务Python(执行效率相对较低)比较适合。
对于优化,应该通过开发的服务或是业务以在项目之初就根据需求来对资源进行预先估算,大致属于IO密集型还是计算密集型的业务,并进行项目前期的资源预算等工作的开展,也包括前期的设计和后期的优化。
线程与进程 计算密集型 IO密集型
最新推荐文章于 2024-04-16 14:00:01 发布