深入了解Python多线程
文章目录
Python 线程允许同时运行程序的不同部分并可以简化的设计。本文将详细介绍Python的线程。在本文中,我们将讨论如下内容:
- Python中线程的基本概念及其限制
- 如何创建线程并等待完成
- 如何使用ThreadExecutor
- 如何避免线程间的条件竞争
- 如何使用通用
threading
库的通用工具
本文将使用Python3.9作为运行环境。
1、Python中的线程
线程是一个单独的执行流。但是对大多数Python3应用程序而言,不同的线程实际并不同时执行。
人们很容易将线程视为有两个(或更多)不同的处理器运行程序,每个处理器同时执行一项独立的任务。 这几乎是正确的。 线程可能在不同的处理器上运行,但它们一次只会运行一个。
让多个任务同时运行需要非标准的 Python 实现,用不同的语言编写一些代码,或者使用会带来一些额外开销的多处理。
由于 Python 的 CPython 实现方式,线程可能无法加速所有任务。 这是由于与 GIL 的交互本质上限制了一个 Python 线程一次运行。
花费大量时间等待外部事件的任务通常是线程化的良好选择。 需要大量 CPU 计算且花费很少时间等待外部事件的问题可能根本不会运行得更快。
这对于用 Python 编写并在标准 CPython 实现上运行的代码来说是正确的。 如果线程是用 C 语