10、Python 多线程与多进程:原理、实践与应用

Python 多线程与多进程:原理、实践与应用

1. 全局解释器锁(GIL)概述

全局解释器锁(GIL)并非 Python(或 CPython)所独有,其他编程语言如 Ruby 的官方实现 Ruby MRI 以及 OCaml 也有 GIL。在 CPython 中,由于内存管理并非线程安全,GIL 是必要的。它通过强制所有操作串行执行,确保内存不会被破坏。对于单线程程序而言,GIL 能提升执行速度,并且简化了 C 扩展的创建,因为开发者无需考虑多线程问题。

不过,也有一些绕过 GIL 的方法:
- 使用 C 代码 :由于 GIL 仅阻止线程同时运行 Python 字节码,因此可以用 C 语言编写任务代码,而 Python 仅作为代码的包装器。在这种情况下,GIL 不会阻止 C 代码同时运行所有线程。
- 网络服务器场景 :对于大部分时间用于从网络读取数据包的网络服务器,GIL 不会影响性能。此时,增加的并发能力可以处理更多数据包,尽管没有真正的并行性,但能有效提升程序性能(每秒可服务更多客户端),不过每个任务的执行时间不变。

2. Python 中的线程

2.1 线程基础

线程由开始、执行序列和结束组成,还有一个指令指针,用于跟踪线程在其上下文中的当前运行位置。该指针可以被抢占或中断以停止线程,也可以暂时挂起,即让线程进入休眠状态。

在 Python 中处理线程有两种选择:
- thread 模块 :提供了一些有限的线程处理能力,使用简单,对于小任务,带来的开销较小。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值