找回密码
 立即注册
首页 业界区 业界 python3.14版本的free-threading功能体验

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

孔季雅 4 天前
操作系统: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/
1.png

一、功能说明

从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
2.png

二、环境准备

这里使用源码编译的方式安装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/
3.png

 编译时需要添加关闭gil选项:
--disable-gil
安装依赖:
  1. apt install gcc bzip2 libssl-dev libssl3 openssl xzip lzma sqlite3 libgdbm-dev tk libffi-dev
复制代码
编译及安装:
  1. ./configure --enable-optimozations --enable-shared --disable-gil  --prefix=/usr/local/python314
  2. make
  3. make altinstall
复制代码
编辑环境脚本(env.sh):
  1. #! /bin/bash
  2. export CFLAGS="-I/usr/local/python314/include"
  3. export LDFLAGS="-L/usr/local/python314/lib"
  4. export LD_LIBRARY_PATH=/usr/local/python314/lib
复制代码
环境生效:
  1. source env.sh
复制代码
可以通过-VV参数查看是否支持free-threading功能:
4.png

 也可通过以下方式查看是否支持free-threding功能:
  1. sys._is_gil_enabled()
  2. sys.version
复制代码
5.png

三、测试验证

这里使用简单的多线程代码进行验证。
测试代码如下(thrdTest1.py):
  1. import threading
  2. import time,random
  3. def fun(interval):
  4.     counter = 0
  5.     while True:
  6.         a=random.randint(10000,99999) * random.randint(10000,99999)
  7. for i in range(3):
  8.     t = threading.Thread(target=fun,args=(1,))
  9.     t.daemon = True
  10.     t.start()
  11. time.sleep(100)
复制代码
启动脚本如下(start.sh):
  1. #! /bin/bash
  2. export CFLAGS="-I/usr/local/python314/include"
  3. export LDFLAGS="-L/usr/local/python314/lib"
  4. export LD_LIBRARY_PATH=/usr/local/python314/lib/usr/local/python314/bin/python3.14 thrdTest1.py
复制代码
运行效果如下:
6.png

由图可以看出:
3个线程跑满3个cpu,free-threading功能可充分发挥多核cpu优势。
四、资源获取

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

 

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册