当前位置: 首页 > news >正文

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

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

python 3.14.0发布页:

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

image

一、功能说明

从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

image

二、环境准备

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

image

编译时需要添加关闭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功能:

image

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

sys._is_gil_enabled()

sys.version

image

三、测试验证

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

测试代码如下(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

运行效果如下:

image

由图可以看出:

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

四、资源获取

本文相关资源及运行环境,可从如下渠道获取:

关注微信公众号(聊聊博文,文末可扫码)后回复 20251014 获取。

http://www.jsqmd.com/news/76401/

相关文章:

  • springboot基于vue的共享电动车租赁系统设计与实现_6nk626x6
  • Java的奇幻世界Ⅱ
  • 从阮一峰Grid教程到实战:5个商业网站布局解析
  • 传统vsAI:开发魔兽插件效率提升300%的秘密
  • 5分钟构建Java安全沙箱原型
  • Python MD5在实际项目中的5个典型应用场景
  • 3w3cc免费实战:5分钟搭建个人博客系统
  • 5个关键步骤:轻松掌握Docker容器化部署的版本管理艺术
  • Jenkins vs 手工部署:量化分析效率提升300%的秘密
  • 3种高效安装pandas的方法对比,第三种快10倍!
  • 15分钟用OpenRGB打造音乐可视化灯光
  • 实用指南:Mongodb---副本及搭建(主从仲)
  • 2025年靠谱的学生公寓床/学生宿舍公寓床厂家选购指南与推荐 - 行业平台推荐
  • 2025年质量好的公益动画制作/h5/flash动画制作行业权威榜单 - 品牌宣传支持者
  • NanoPi R5S极速部署指南:20分钟打造千兆网络优化器
  • 营销组合建模终极指南:Meridian框架完全解析
  • 出版业效率革命:如何用本地AI工具实现自动化排版与校对
  • Windows Admin Center 2511 发布 - 适用于所有环境的 Windows Server 远程管理工具
  • 探索计算机体系结构的量化之道:第六版权威指南
  • Apache Airflow数据治理自动化工具链终极指南
  • 3天掌握VAR模型:零基础搭建GPT式图像生成系统
  • 3分钟完成OpenSSL安装:极速方案对比
  • 项目分享|Tabby:打造你自己的智能代码补全服务
  • OpenColorIO-Configs 完整颜色管理配置指南
  • Rust二进制大小优化的终极指南:简单快速实现最小化
  • 项目分享 | SurfSense:连接个人知识库的下一代AI研究助手
  • 什么是可信数据空间
  • 2025年评价高的伺服减速器/行星减速器厂家实力及用户口碑排行榜 - 行业平台推荐
  • 面试准备指南:跨部门矛盾问题详细解答策略
  • 鼠标性能精准测评:MouseTester让设备表现一目了然