介绍涉及到并发场景,大家都想到用多线程或者多进程来解决并发问题;一般情况下,为解决多并发场景问题,大多数语言都采用多线程编程模式(线程是一个轻量级进程,共享一个进程空间)。是不是也适用于Python多并发处理?答:不会,对于并发处理,Python多线程和多进程有很大区别!Python多线程与多进程的区别Python多线程不能使用CPU多核资源,即同一时间只有一个线程使用CPU资源,所以使用Python多线程不能算并发。想要充分利用CPU多核资源,实现多并发,就需要Python多进程!也就是说:只有Python多进程才能使用CPU多核资源,实现真正的多并发!Python多线程和多进程应用场景既然Python多线程不能并发,那它存在的意义何在?其实Python多线程和多处理都有各自的应用场景:Python多线程适用于I/O密集型场景,比如解决网络IO和磁盘IO阻塞问题,比如文件读写、网络数据传输等;而Python多进程更适合计算密集型场景,多并发,大量计算任务等。注意:Python多线程和多进程在平时的开发过程中需要谨慎使用。如果使用Python多线程来处理计算密集型任务,会比实际的单进程处理性能慢!所以要注意,这取决于场景的类型。说说Python多线程,全局解释器锁(GIL)为什么Python多线程不能使用CPU多核资源?为什么Python多线程会同时占用CPU资源?正是因为Python有一个全局解释器锁(GIL,全称GlobalInterpreterLock),使得Python多线程无法使用CPU多核资源,保证同一时间只有一个线程在使用CPU资源时间;当发生IO阻塞时,解锁并释放CPU资源,其他线程可以申请锁使用CPU资源。Python并发编程Python多进程编程使用的模块库:multiprocessing模块是Python内置的多进程处理库,类似于线程库threading.Thread。Python多线程编程使用的模块库:thread模块是Python内置的,比较底层。不推荐使用线程模块。后者是多线程的;但是它们的编程接口是完全一样的;所以在多线程和多进程之间切换代码非常方便!限于篇幅,编程模块的具体使用我就不介绍了,以后会开专题补上!Python多线程多进程思维导图供大家参考:Python多进程编程Python多线程编程
