什么是 Python GIL?
在阅读本文之前您应该了解的事情:
介绍
全局解释器锁,是一种保护对Python对象的访问并仔细控制线程执行的锁,防止数据访问和修改中的竞争并发,确保一次只有一个线程可以执行Python代码。
如果没有 GIL,Python 的内存管理就不是线程安全的,可能会导致不一致和崩溃。 (僵局) 2 - 它是如何运作的?很简单,Thread在运行时会持有GIL,运行后Thread会释放GIL。接下来的线程必须请求访问 GIL 才能执行操作码(低级操作)。我在下面画了一个 GIL 行为的例子:这意味着Python开发人员可以利用异步代码和多线程代码,而不必担心在运行的进程中获取任何变量的锁或进程因死锁而崩溃。 3 - 使用 GIL 的优点: 4 - 使用 GIL 的缺点: 5 -如何处理 GIL 缺点?
在某些情况下,您可以使用进程来运行算法,而不是使用线程。对于 IO/Bound 操作,线程和并发可以让您更好地利用资源,对于 CPU/Bound 操作,您可以使用多处理库来更好地利用资源。
文章推荐
-
Python中使用Beautiful Soup进行网页抓取:基础知识探究
在之前的教程中,我向您展示了如何使用 Requests 模块通过 Python 访问网页。本教程涵盖了很多主题,例如发出...
Python
2小时前 2 -
使用Python计算神经机器翻译的BLEU分数
使用 NMT 或 NLP 中的神经机器翻译,我们可以将文本从给定语言翻译为目标语言。为了评估翻译的执行情况,我们使用 P...
Python
2小时前 2 -
探索 Python 包的使用
Python 包允许您分解大型系统并以一致的方式组织其模块,以便您和其他人可以有效地使用和重用。 Python 的座右铭...
Python
2小时前 1 -
使用Python获取文件中的字符数、单词数、空格数和行数
文本文件分析是各种数据处理和自然语言处理应用程序中的一项基本任务。 Python 是一种多功能且功能强大的编程语言,它提...
Python
2小时前 2 -
封装在Python中是什么?
封装是Python、Java等面向对象语言的关键概念之一。封装用于限制对方法和变量的访问。在封装中,代码和数据被包装在一...
Python
2小时前 2
最新文章
- Python中使用Beautiful Soup进行网页抓取:基础知识探究 2小时前
- 使用Python计算神经机器翻译的BLEU分数 2小时前
- 探索 Python 包的使用 2小时前
- 使用Python获取文件中的字符数、单词数、空格数和行数 2小时前
- 封装在Python中是什么? 2小时前
- 如何在Python中编写具有输出参数(按引用调用)的函数? 2小时前
- Python中的构造函数 2小时前
- 使用Python可视化O(n)。 2小时前
- 使用 Python Bokeh 创建具有多个字形的绘图 2小时前
- Python脚本打开网页浏览器 2小时前