Python之路44-进程与线程区别和GIL全局解释器锁
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python之路44-进程与线程区别和GIL全局解释器锁相关的知识,希望对你有一定的参考价值。
进程
程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就成为进程,程序和进程的区别,程序是指令的集合,它是进程运行的静态描述文本,进程是程序的一次执行活动,属于动态概念
有了进程为什么还要有线程?
进程只能同一时间干一件事
进程在执行的过程中如果阻塞,例如等待输入,整个进程就会挂起,即使进程中有些工作不依赖此输入的数据,也将无法执行
线程
线城是操作系统能够进行运算调度的最小单位,它包含在进程中,是进程的实际运行单位
进程和线程的区别
线程共享创建它的进程的内存空间,进程有自己独立的内存空间
线程可以直接访问其进程的数据段,进程有自己的父进程的数据段副本
线程可以直接与其进程的其他线程通信,进程必须使用进程间通信与兄弟进程通信
创建线程很容易,创建进程需要复制父进程
对主线程的更改(取消,优先级更改等)可能会影响进程其他线程的行为,对父进程的更改不会影响子进程
GIL锁,全局解释器锁
无论启动多少个线程,计算机有多个个cpu,Python在执行的时候在同一时刻只允许一个线程运行
GIL并不是Python特性,它是实现Python解释器cpython时所引入的一个概念
本文出自 “八英里” 博客,请务必保留此出处http://5921271.blog.51cto.com/5911271/1907232
以上是关于Python之路44-进程与线程区别和GIL全局解释器锁的主要内容,如果未能解决你的问题,请参考以下文章
Python并发编程05/ 死锁/递归锁/信号量/GIL锁/进程池/线程池