python3.14版本的free-threading功能体验

操作系统:Debian 12_x64

python版本: 3.14.0

最新发布的python3.14.0版本已经正式支持free-threading功能,可以在python中关闭GIL,更好地利用多核 CPU 的性能。

今天安装该版本进行了体验,并做了简单测试,这里整理成笔记记录下来,希望对你有帮助。

python 3.14.0发布页:

https://www.python.org/downloads/release/python-3140/

一、功能说明

从3.13版本开始,python引入了free-threading功能,其中GIL可被关闭,python线程可充分利用多核cpu资源,这里做下简单介绍。

1)通过源码安装时,需要添加 --disable-gil 标志;

2)可通过如下方式查看是否支持free-threading功能:

python -VV

sys.version

sys._is_gil_enabled()

3)线程安全方面

free-threading版本的python旨在提供与启用GIL功能python版本类似的线程安全行为,通过内部锁来实现dict、list 和 set这些内置数据类型的线程安全。

说明:官方文档建议尽量使用 threading.Lock 或其他同步原语,而不是依赖内置类型的内部锁。

更多信息请参考官方文档,可参考官方文档:

https://docs.python.org/3/howto/free-threading-python.html

二、环境准备

这里使用源码编译的方式安装python3.14.0版本,如果嫌麻烦,可直接下载预编译的二进制文件。

源码下载地址:

https://www.python.org/ftp/python/3.14.0/Python-3.14.0.tgz

预编译二级制下载地址可从页面获取:

https://www.python.org/downloads/release/python-3140/

编译时需要添加关闭gil选项:

--disable-gil

安装依赖:

复制代码
apt install gcc bzip2 libssl-dev libssl3 openssl xzip lzma sqlite3 libgdbm-dev tk libffi-dev

编译及安装:

复制代码
./configure --enable-optimozations --enable-shared --disable-gil  --prefix=/usr/local/python314
make
make altinstall

编辑环境脚本(env.sh):

复制代码
#! /bin/bash
export CFLAGS="-I/usr/local/python314/include"
export LDFLAGS="-L/usr/local/python314/lib"
export LD_LIBRARY_PATH=/usr/local/python314/lib

环境生效:

复制代码
 source env.sh

可以通过-VV参数查看是否支持free-threading功能:

也可通过以下方式查看是否支持free-threding功能:

复制代码
sys._is_gil_enabled()
sys.version

三、测试验证

这里使用简单的多线程代码进行验证。

测试代码如下(thrdTest1.py):

复制代码
import threading
import time,random
def fun(interval):
    counter = 0
    while True:
        a=random.randint(10000,99999) * random.randint(10000,99999)
for i in range(3):
    t = threading.Thread(target=fun,args=(1,))
    t.daemon = True
    t.start()
time.sleep(100)

启动脚本如下(start.sh):

复制代码
#! /bin/bash
export CFLAGS="-I/usr/local/python314/include"
export LDFLAGS="-L/usr/local/python314/lib"
export LD_LIBRARY_PATH=/usr/local/python314/lib
/usr/local/python314/bin/python3.14 thrdTest1.py

运行效果如下:

由图可以看出:

3个线程跑满3个cpu,free-threading功能可充分发挥多核cpu优势。

四、资源获取

本文相关资源及运行环境,可从如下渠道获取:
关注微信公众号(聊聊博文,文末可扫码)后回复 20251014 获取。

相关推荐
装不满的克莱因瓶13 小时前
链式法则如何传递参数误差 —— 深入理解神经网络中的梯度传播
人工智能·python·深度学习·神经网络·数学·机器学习·ai
Anastasiozzzz13 小时前
从有限状态机到智能体图:传统 FSM 与 Agent Graph的演进
java·人工智能·python·ai
biter down18 小时前
从 0 到 1 搭建 Python 接口自动化测试框架(博客系统实战)
开发语言·python
肖永威20 小时前
Python多业务并行计算框架插件化演进:从硬编码到动态注册
python·插件化·并行计算·动态注册
yz_aiks20 小时前
Linux Jar包配置Systemd自启动实战:从排查到配置全流程
linux·python·jar·自启动·systemd
不知名的老吴20 小时前
线程的生命周期之线程“插队“
java·开发语言·python
xsc69967521 小时前
从零搭建大模型与智能体平台 - 完整技术详解
python
无风听海1 天前
多租户系统中的 OIDC:Discovery 端点与联合登录的深度实践
后端·python·flask
CTA终结者1 天前
期货量化主力换月程序怎么移仓:天勤 underlying_symbol 与任务切换
python·区块链
马士兵教育1 天前
Java还有前景吗?Java+AI大模型学习路线及项目?
java·人工智能·python·学习·机器学习