你对多线程和多进程理解是什么,他们是如何加快程序执行速度的?
(1)多线程:程序有多个并行执行流,这些执行流就是多个线程来同时完成多个任务。
在python中因为有GIL(全局解释器锁)的存在,规定了每个线程只有拿到这个锁才能开始运行(锁只有一把),而也就导致了python中并没有真正的并行操作,也就没有了真正的多线程(并行就是多线程),所以python中的多线程实际是并发完成的伪多线程。而为什么不把这把锁给去掉呢,因为python中80%的操作都用到了这把锁。所以去不得。python最厉害的地方就是粘合性,也被称之为胶水性语言,所以咱这不行可以跟别的语言结合,用它们的,这才是python最厉害的地方。
(2)多线程和多进程的优点:
多线程的优点:
-程序逻辑和控制方式比较复杂,可以编写更加大型系统程序逻辑。
-所有的线程共享内存和变量,便于线程之间交互。
-线程消耗的总资源数比多进程要好很多。
多进程优点:
-每个进程相互独立,不影响主程序的稳定性,子进程崩溃对主程序不会产生影响。
-通过增加cpu可以很容易的扩展性能。
-每个子进程都有2GB寻址空间和相关资源数,总体能够达到的性能上限很大。
(3)提高cpu利用率来加快的程序运行速度。
多进程是利用cpu多个特性,充分使得每个核心都发挥出作用。
多线程是利用单核cpu的特性,他通过cpu不断在多个线程之间切换,来提高cpu的执行效率,加快程序运行速度。
(4)多线程和多进程如何选择?
IO密集型选择多线程,计算密集型选择多进程。
多线程和多进程的选择需要根据具体的开发环境,一般可以两个一起使用。