Python之路44-进程与线程区别和GIL全局解释器锁

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python之路44-进程与线程区别和GIL全局解释器锁相关的知识,希望对你有一定的参考价值。

进程

程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就成为进程,程序和进程的区别,程序是指令的集合,它是进程运行的静态描述文本,进程是程序的一次执行活动,属于动态概念


有了进程为什么还要有线程?

进程只能同一时间干一件事

进程在执行的过程中如果阻塞,例如等待输入,整个进程就会挂起,即使进程中有些工作不依赖此输入的数据,也将无法执行


线程

线城是操作系统能够进行运算调度的最小单位,它包含在进程中,是进程的实际运行单位


进程和线程的区别

  1. 线程共享创建它的进程的内存空间,进程有自己独立的内存空间

  2. 线程可以直接访问其进程的数据段,进程有自己的父进程的数据段副本

  3. 线程可以直接与其进程的其他线程通信,进程必须使用进程间通信与兄弟进程通信

  4. 创建线程很容易,创建进程需要复制父进程

  5. 对主线程的更改(取消,优先级更改等)可能会影响进程其他线程的行为,对父进程的更改不会影响子进程


GIL锁,全局解释器锁

无论启动多少个线程,计算机有多个个cpu,Python在执行的时候在同一时刻只允许一个线程运行

GIL并不是Python特性,它是实现Python解释器cpython时所引入的一个概念

本文出自 “八英里” 博客,请务必保留此出处http://5921271.blog.51cto.com/5911271/1907232

以上是关于Python之路44-进程与线程区别和GIL全局解释器锁的主要内容,如果未能解决你的问题,请参考以下文章

Python进程与线程及GIL(全局解释器锁)

python GIL锁进程池与线程池同步异步

python中GIL和线程与进程

Python并发编程05/ 死锁/递归锁/信号量/GIL锁/进程池/线程池

python第三十七天,GIL全局解释器锁*****,线程池与进程池 同步异步,阻塞与非阻塞,异步回调

GIL(全局解释器锁)与互斥锁