博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GIL锁
阅读量:5794 次
发布时间:2019-06-18

本文共 869 字,大约阅读时间需要 2 分钟。

1.关于在单核CPU与多核CPU中,线程的执行问题?

当接触到了多线程,就不免的要设计到CPU,因为线程是需要获得CPU的准许指令(由CPU来调度)之后,才可以执行任务。那么在单核CPU中,在某一时刻时,是只有一个线程在执行任务。在多核CPU中,就有多个线程在执行任务。

2.单核CPU中的‘假’并行

对于线程执行问题,就要涉及到并发与并行问题,具体的解释,我在前面的文章中提到了。如果CPU是单核的,当存在10个线程同时启动时,看上去都在执行。其实在某一时刻,只有一个线程被允许执行,由于线程间的切换太快,导致10个线程看上去都在执行,给人一种并行的感觉,其实是假的并行。

3.多核CPU内的真并行

经过科技大佬们的不懈努力,单核CPU已经不能够满足日益所需了,于是多核CPU被创造出来。在同一时刻可以多个线程同时执行任务,从而大大的提高效率。那么,在PYthon内,多核也可以实现并行嘛?

4.在PYthon中的多核可以实现吗?

当然是不可以的,无论是4核,8核,都不允许同时执行的发生。在同一时间,永远都只有一个线程在执行,所以Python中的多线程其实都是假线程。

5.GIL(全局解释器锁)

无论你启多少个线程,你有多少个cpu, Python在执行的时候会淡定的在同一时刻只允许一个线程运行

6.GIL锁的存在意义

由于Python被研发时的一个缺陷,导致不得不在线程中使用GIL锁。Python的底层语言是C语言,Python的解释器是CPython。在线程执行时,是调用原生线程来执行,也就是调用底层语言C语言来提供接口,于是,缺陷就产生了,Python解释器无法越界管理C语言的线程,那么在多线程并行执行时,内部的原生线程执行是无法进行管理的,Python的线程只能进行等待,等待C的原生线程执行完毕将结果返回,但是返回的结果就不一定一一对应了。所以就必须使用一个工具来限制线程的执行,使得能够保证数据据结果的准确性。

 

转载于:https://www.cnblogs.com/zxh1297/p/9401597.html

你可能感兴趣的文章
Windows 8 C++/CX字符串
查看>>
路由协议重分发之RIP协议与OSPF协议
查看>>
C# 操作Excel2003
查看>>
手把手教你自己动手恢复坏道硬盘数据
查看>>
【电子基础】电子基础知识·持续更新
查看>>
mysql创建定时执行存储过程任务
查看>>
heartbeat 3.0集群(1)集群原理
查看>>
C#中 Finally中不允许有return
查看>>
Java - 容器详解
查看>>
Synchronized Using
查看>>
Linux下PF_PACKET的使用(todo)
查看>>
Android开发者指南(16) —— Activity and Task Design
查看>>
linux下在jar包中找类是否存在
查看>>
mysql备份与恢复策略
查看>>
PPT2010设置图片透明度
查看>>
Horizon View 6-配置View Connection Server⑷
查看>>
几个负载均衡器的小结
查看>>
如何识别高级的验证码
查看>>
[PYTHON]python 基础笔记(4)
查看>>
写保护下的U盘修复
查看>>