python3.14版本的free-threading功能體驗(yàn)
操作系統(tǒng):Debian 12_x64
python版本: 3.14.0
最新發(fā)布的python3.14.0版本已經(jīng)正式支持free-threading功能,可以在python中關(guān)閉GIL,更好地利用多核 CPU 的性能。
今天安裝該版本進(jìn)行了體驗(yàn),并做了簡(jiǎn)單測(cè)試,這里整理成筆記記錄下來(lái),希望對(duì)你有幫助。
python 3.14.0發(fā)布頁(yè):
https://www.python.org/downloads/release/python-3140/

一、功能說(shuō)明
從3.13版本開(kāi)始,python引入了free-threading功能,其中GIL可被關(guān)閉,python線程可充分利用多核cpu資源,這里做下簡(jiǎn)單介紹。
1)通過(guò)源碼安裝時(shí),需要添加 --disable-gil 標(biāo)志;
2)可通過(guò)如下方式查看是否支持free-threading功能:
python -VV
sys.version
sys._is_gil_enabled()
3)線程安全方面
free-threading版本的python旨在提供與啟用GIL功能python版本類似的線程安全行為,通過(guò)內(nèi)部鎖來(lái)實(shí)現(xiàn)dict、list 和 set這些內(nèi)置數(shù)據(jù)類型的線程安全。
說(shuō)明:官方文檔建議盡量使用 threading.Lock 或其他同步原語(yǔ),而不是依賴內(nèi)置類型的內(nèi)部鎖。
更多信息請(qǐng)參考官方文檔,可參考官方文檔:
https://docs.python.org/3/howto/free-threading-python.html

二、環(huán)境準(zhǔn)備
這里使用源碼編譯的方式安裝python3.14.0版本,如果嫌麻煩,可直接下載預(yù)編譯的二進(jìn)制文件。
源碼下載地址:
https://www.python.org/ftp/python/3.14.0/Python-3.14.0.tgz
預(yù)編譯二級(jí)制下載地址可從頁(yè)面獲?。?/span>
https://www.python.org/downloads/release/python-3140/

編譯時(shí)需要添加關(guān)閉gil選項(xiàng):
--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
編輯環(huán)境腳本(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
環(huán)境生效:
source env.sh
可以通過(guò)-VV參數(shù)查看是否支持free-threading功能:

也可通過(guò)以下方式查看是否支持free-threding功能:
sys._is_gil_enabled()
sys.version

三、測(cè)試驗(yàn)證
這里使用簡(jiǎn)單的多線程代碼進(jìn)行驗(yàn)證。
測(cè)試代碼如下(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)
啟動(dòng)腳本如下(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
運(yùn)行效果如下:

由圖可以看出:
3個(gè)線程跑滿3個(gè)cpu,free-threading功能可充分發(fā)揮多核cpu優(yōu)勢(shì)。
四、資源獲取
本文相關(guān)資源及運(yùn)行環(huán)境,可從如下渠道獲?。?/span>


浙公網(wǎng)安備 33010602011771號(hào)