GIL,多线程、多进程的理解,如何加快程序执行的速度

你对多线程和多进程理解是什么,他们是如何加快程序执行速度的?


(1)多线程:程序有多个并行执行流,这些执行流就是多个线程来同时完成多个任务。

        在python中因为有GIL(全局解释器锁)的存在,规定了每个线程只有拿到这个锁才能开始运行(锁只有一把),而也就导致了python中并没有真正的并行操作,也就没有了真正的多线程(并行就是多线程),所以python中的多线程实际是并发完成的伪多线程。而为什么不把这把锁给去掉呢,因为python中80%的操作都用到了这把锁。所以去不得。python最厉害的地方就是粘合性,也被称之为胶水性语言,所以咱这不行可以跟别的语言结合,用它们的,这才是python最厉害的地方。

(2)多线程和多进程的优点:

多线程的优点:

​          -程序逻辑和控制方式比较复杂,可以编写更加大型系统程序逻辑。

​          -所有的线程共享内存和变量,便于线程之间交互。

​          -线程消耗的总资源数比多进程要好很多。

多进程优点:

​         -每个进程相互独立,不影响主程序的稳定性,子进程崩溃对主程序不会产生影响。

​         -通过增加cpu可以很容易的扩展性能。

        ​ -每个子进程都有2GB寻址空间和相关资源数,总体能够达到的性能上限很大。

(3)提高cpu利用率来加快的程序运行速度。

​          多进程是利用cpu多个特性,充分使得每个核心都发挥出作用。

​          多线程是利用单核cpu的特性,他通过cpu不断在多个线程之间切换,来提高cpu的执行效率,加快程序运行速度。

(4)多线程和多进程如何选择?

​          IO密集型选择多线程,计算密集型选择多进程。

​          多线程和多进程的选择需要根据具体的开发环境,一般可以两个一起使用。

你可能感兴趣的:(GIL,多线程、多进程的理解,如何加快程序执行的速度)