一道本在线视频_亚洲人成色77777_亚洲精品555_亚洲制服丝袜av_日日干夜夜骑_国产精品亚洲аv天堂网_爱高潮www亚洲精品_鬼打鬼之黄金道士1992林正英_岛国av在线播放_日日狠狠久久偷偷四色综合免费

Python 3.14入門并發提速GIL真能“關燈”了,做個前端小接口
2025-12-19 15:41來源:用戶lC3C6Rql

兄弟姐妹們,打工人最怕啥?不是代碼寫不出來,是“環境一裝半天、跑起來還慢、上線還踩坑”。我這兩天翻了下 Python 3.14.2(2025-12-05) 的發布信息,心里就一個感受:這回官方是真想讓大家少折騰,多干活。 你看它這波更新,別的先不說,光是這幾條就夠咱們茶水間吹一下午:

Free-threaded(可選無GIL):線程終于有機會把多核吃滿,不再是“多線程看著熱鬧、CPU卻在打哈欠”。

標準庫自帶 Zstandard(zstd)壓縮:以前你想要又快又省的壓縮,得裝第三方;現在官方直接塞進來了。

新規矩:3.14 起不再提供 PGP 簽名,官方推薦 Sigstore:說白了就是“驗包方式換了”,別再用老習慣去找 PGP 了。

今天咱不寫論文、不擺架子,直接來個能復制就跑的入門實戰:做一個“壓縮小賣部”接口——后端用 Python 3.14 的 compression.zstd,前端一個 HTML 直接調,最后再給你補一段 鴻蒙 ArkTS 調接口的寫法。你寫完這套,回頭跟同事說一句:“這接口我十分鐘起的”,氣勢立馬不一樣。

?

入門技術

先把話說明白:Python 3.14 的“無GIL”不是默認所有人都自動起飛。它是一個“free-threaded build”(特殊構建),從 Python 3.13 開始就能玩了,3.14 是“官方支持、但仍然可選”的階段。怎么判斷你現在這個 Python 到底是不是那種“能關 GIL 的版本”?官方給了很實在的辦法:python -VV / sys.version 里會出現 free-threading build,還能用 sys._is_gil_enabled() 看進程里 GIL 到底開沒開。另外,你想臨時開/關 GIL,也不是靠玄學——有標準姿勢:

PYTHON_GIL=1 強制開 GIL PYTHON_GIL=0 強制關 GIL(前提:你得是 --disable-gil 那種構建) 或者啟動時用 -X gil=0,1

還有一點特別“人間真實”:free-threaded 不是白嫖,單線程會有點額外開銷;官方文檔說 pyperformance 平均開銷大概在 1%~8%(跟平臺有關)。所以別一上來就喊“我項目必須全換”,先挑你真正 CPU 吃緊的地方上。

主內容

先把環境整利索:用 uv 把“裝環境”這破事兒干脆利落解決

以前新人入門最煩的就是:

“裝 Python → 裝 pip → 裝 venv → 裝依賴 → 版本還對不上 → 人直接麻了”。

現在我強烈建議你試試 uv,它就是那種“少廢話,多辦事”的工具:一個工具把 pip/venv/裝 Python/鎖依賴這些活兒都包了,還主打一個快。

終端里你就這么敲(照抄就行):

# 裝 uv(官方寫法) curl -LsSf https://astral.sh/uv/install.sh | sh # 新建項目 uv init zstd-shop cd zstd-shop # 安裝/切到 Python 3.14(你機器上沒裝也沒事,uv 會管) uv python install 3.14 uv python pin 3.14 # 裝依賴:FastAPI + Uvicorn uv add fastapi "uvicorn[standard]"

上面這些命令,基本就是“給你把地基打好”。uv 官方文檔就這么干的:能初始化項目、加依賴、跑命令、還能裝 Python 版本。

后端開干:用 Python 3.14 自帶 zstd 寫壓縮/解壓 API

Python 3.14 新增的 compression.zstd 模塊,最爽的是:它既有一把梭的 compress/decompress,也有文件接口、流式壓縮這些正經家伙。

注意它屬于“可選模塊”,極少數發行版可能沒編進去;要是你 import 報錯,優先換官方安裝包/正規構建。

在項目根目錄新建 app.py,直接貼:

from __future__ import annotations

import base64

import os

import sys

import time

from concurrent.futures import ThreadPoolExecutor

from fastapi import FastAPI

from pydantic import BaseModel

# Python 3.14 新東西:標準庫自帶 zstd

from compression import zstd # 需要 Python 3.14+

app = FastAPI(title="Zstd Shop (Python 3.14)")

class CompressIn(BaseModel):

text: str

level: int | None = 3 # 壓縮等級:越大越省空間但越慢;3 先夠用

class DecompressIn(BaseModel):

b64: str

@app.get("/ping")

def ping():

return {

"ok": True,

"python": sys.version,

# 有 free-threaded build 才可能關 GIL;普通 Python 這里永遠是 True

"gil_enabled": getattr(sys, "_is_gil_enabled", lambda: True)(),

}

@app.post("/compress")

def compress_api(payload: CompressIn):

raw = payload.text.encode("utf-8")

compressed = zstd.compress(raw, level=payload.level)

b64 = base64.b64encode(compressed).decode("ascii")

ratio = (len(compressed) / len(raw)) if raw else 0.0

return {

"bytes_in": len(raw),

"bytes_out": len(compressed),

"ratio": round(ratio, 4),

"b64": b64,

}

@app.post("/decompress")

def decompress_api(payload: DecompressIn):

compressed = base64.b64decode(payload.b64.encode("ascii"))

raw = zstd.decompress(compressed)

return {"text": raw.decode("utf-8", errors="replace")}

# 純 Python CPU 壓力測試:看看線程到底能不能真并行(free-threaded 才會明顯)

def cpu_burn(iters: int) -> int:

x = 0

for i in range(iters):

x ^= (i * 2654435761) & 0xFFFFFFFF

x = ((x << 13) | (x >> 19)) & 0xFFFFFFFF

return x

@app.get("/bench")

def bench(workers: int = 4, iters: int = 25_000_00):

start = time.perf_counter()

with ThreadPoolExecutor(max_workers=workers) as ex:

results = list(ex.map(cpu_burn, [iters] * workers))

cost = time.perf_counter() - start

return {

"workers": workers,

"iters_per_worker": iters,

"seconds": round(cost, 4),

"checksum": sum(results) & 0xFFFFFFFF,

"gil_enabled": getattr(sys, "_is_gil_enabled", lambda: True)(),

"cpu_count": os.cpu_count(),

"python": sys.version,

}

你看這代碼,就干三件事:

“能壓就壓、能解就解、順手給你一個 bench 看看線程有沒有真跑起來”。

啟動服務:

uv run uvicorn app:app --reload --host 0.0.0.0 --port 8000

瀏覽器打開 http://127.0.0.1:8000/docs,FastAPI 自帶的接口文檔就出來了。

這就是我喜歡 FastAPI 的地方:新手也能“像樣兒”。

端一口氣接上:一個 HTML 就能把接口玩起來

同目錄新建 index.html,內容如下(不搞框架,先求能跑):

<!doctype html>

<html lang="zh">

<head>

<meta charset="utf-8" />

<title>Zstd Shop Demo</title>

</head>

<body>

<h2>壓縮小賣部(Python 3.14 zstd)</h2>

<p>隨便粘一段文字進去,點壓縮,看體積能省多少。</p>

<textarea id="txt" style="width: 100%; ">打工人記住:工具選對,效率翻倍。</textarea>

<div style="margin: 10px 0;">

<button id="btnC">壓縮</button>

<button id="btnD">解壓</button>

<button id="btnB">跑個并發 bench</button>

</div>

<pre id="out" style="background:#f6f6f6;padding:10px;"></pre>

<script>

const out = (x) => (document.getElementById("out").textContent = typeof x === "string" ? x : JSON.stringify(x, null, 2));

let lastB64 = "";

document.getElementById("btnC").onclick = async () => {

const text = document.getElementById("txt").value;

const res = await fetch("http://127.0.0.1:8000/compress", {

method: "POST",

headers: { "Content-Type": "application/json" },

body: JSON.stringify({ text, level: 3 }),

});

const data = await res.json();

lastB64 = data.b64;

out(data);

};

document.getElementById("btnD").onclick = async () => {

if (!lastB64) return out("你先壓縮一次,別急。");

const res = await fetch("http://127.0.0.1:8000/decompress", {

method: "POST",

headers: { "Content-Type": "application/json" },

body: JSON.stringify({ b64: lastB64 }),

});

const data = await res.json();

out(data);

};

document.getElementById("btnB").onclick = async () => {

const res = await fetch("http://127.0.0.1:8000/bench?workers=4&iters=25000000");

const data = await res.json();

out(data);

};

</script>

</body>

</html>

打開這個 HTML,你就能在本地把“壓縮/解壓/并發測試”全跑一遍。

這就是前端的爽:接口通了,啥端都能接。

鴻蒙 ArkTS 也能調:后端接口通用才是王道

很多人做鴻蒙卡在“網絡請求怎么寫”。其實鴻蒙的 HTTP 請求模塊也挺直接:創建一個 httpRequest,然后 request(url, options) 發出去。給你一段“能看懂、能改”的 ArkTS 示例思路(把 URL 換成你電腦 IP + 端口就行):

import { http } from '@kit.NetworkKit';

async function compressOnHarmony(text: string) {

let httpRequest = http.createHttp();

const url = "http://YOUR_PC_IP:8000/compress";

const resp = await httpRequest.request(url, {

method: http.RequestMethod.POST,

header: { 'Content-Type': 'application/json' },

expectDataType: http.HttpDataType.STRING,

extraData: JSON.stringify({ text, level: 3 }),

});

// 返回是字符串就 JSON.parse 一下

const body = JSON.parse(resp.result as string);

return body; // { bytes_in, bytes_out, ratio, b64 }

}

鴻蒙這套請求參數(method/extraData/expectDataType/header)就是常用那幾個,邏輯跟你寫 fetch/axios 的腦回路是一樣的:把 body 塞進 extraData,服務端按 JSON 解析就行。

最后嘮兩句“人話”

你別看我今天吹得熱鬧,核心就一句:

別老把“學新技術”當成刷題,當成“給自己省事”的買賣。

Python 3.14 這波的意義,不是讓你去背 PEP 編號,是真把一些“以前要靠第三方、靠玄學、靠折騰”的東西,慢慢變成官方正經能力:free-threaded 終于被官方認賬了(但仍然可選),zstd 也進了標準庫,連發布驗包的規矩都說清楚了。

你要是做后端,就把接口寫穩;

你要是做前端/鴻蒙,就把請求接好;

你要是做性能,就拿 /bench 跑一跑,看看你機器的線程到底能不能真并行。

別的先不管,能把活兒干漂亮,就是硬道理。

#Python #Python314 #多線程 #并發編程 #GIL #后端開發 #FastAPI #接口開發 #前端開發 #Web開發 #鴻蒙開發 #ArkTS #程序員成長 #效率工具 #uv工具 #性能優化

評論1
用戶CZXtSe7D
不錯
四川
1天前
国产精品自拍亚洲| 国产91精品一区| 亚欧成人毛片一区二区三区四区 | 国产伦理精品| 国产精品免费久久| 在线观看成人网 | 亚洲天堂免费观看| 四虎久久影院| 国产综合91天堂亚洲国产| 日本在线不卡视频| 国产91丝袜在线播放0| 国产成人女人在线视频观看 | 黄视频网站在线看| 四虎久久影院| 一级片片| 成人av在线播放| 国产精品自拍在线观看| 日韩中文字幕在线播放| 国产精品自拍一区| 国产一区二区精品| 超级乱淫伦动漫| 天天做日日干| 国产精品自拍亚洲| 国产麻豆精品hdvideoss| 欧美18性精品| 日韩一级精品视频在线观看| 久久国产精品自线拍免费| 国产精品免费精品自在线观看| 成人高清护士在线播放| 成人免费观看的视频黄页| 韩国毛片基地| 日本特黄特黄aaaaa大片| 国产成人精品综合久久久| 中文字幕一区二区三区精彩视频| 日本特黄特色aaa大片免费| 可以在线看黄的网站| 欧美国产日韩在线| 国产亚洲精品aaa大片| 国产一区国产二区国产三区| 久久国产一区二区| 国产一区国产二区国产三区| 韩国妈妈的朋友在线播放| 久草免费在线观看| 九九热国产视频| 99久久视频| 99热精品一区| 国产一区二区精品久久| 国产网站免费| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 黄视频网站免费观看| 国产成人啪精品| 日韩av片免费播放| 999精品在线| 日韩免费片| 欧美国产日韩精品| 国产伦精品一区二区三区无广告 | 四虎影视库国产精品一区| 日韩中文字幕在线亚洲一区 | 国产麻豆精品免费视频| 在线观看成人网 | 日韩免费在线观看视频| 九九免费精品视频| 日韩一级黄色大片| 999精品在线| 欧美激情一区二区三区中文字幕| 欧美国产日韩一区二区三区| 日本伦理片网站| 日韩欧美一二三区| 九九九国产| 精品国产三级a| 久久久久久久免费视频| 麻豆系列 在线视频| 91麻豆精品国产自产在线| 亚洲天堂免费观看| 日本免费乱人伦在线观看| 久久精品道一区二区三区| 日韩专区第一页| 91麻豆精品国产综合久久久| 99久久精品费精品国产一区二区| 麻豆污视频| 久久国产精品永久免费网站| 免费的黄视频| 成人高清视频免费观看| 欧美大片aaaa一级毛片| 国产不卡在线观看视频| 中文字幕一区二区三区精彩视频| 午夜久久网| 欧美激情一区二区三区在线| 成人免费福利片在线观看| 高清一级片| 99久久精品费精品国产一区二区| 香蕉视频久久| 国产美女在线观看| 国产网站免费视频| 美女免费毛片| 国产成人精品综合| 国产亚洲男人的天堂在线观看| 欧美1卡一卡二卡三新区| 成人高清护士在线播放| 色综合久久手机在线| 天堂网中文在线| 精品国产一区二区三区久| 毛片成人永久免费视频| 可以在线看黄的网站| 亚洲精品久久玖玖玖玖| 精品视频在线看| 成人免费福利片在线观看| 精品视频在线观看一区二区| 国产亚洲精品成人a在线| 国产高清视频免费| 你懂的福利视频| 一级女性大黄生活片免费| 超级乱淫伦动漫| 一级片片| 黄色福利| 四虎精品在线观看| 国产一区精品| 中文字幕一区二区三区 精品 | 欧美另类videosbestsex久久| 九九九网站| 国产国语对白一级毛片| 亚洲爆爽| 久草免费在线观看| 国产高清在线精品一区二区| 久久精品大片| 一级女性全黄生活片免费| 国产不卡高清| 精品国产一区二区三区久久久狼| 韩国毛片免费| 亚洲天堂在线播放| 亚飞与亚基在线观看| 欧美18性精品| 日韩欧美一二三区| 一本伊大人香蕉高清在线观看| 国产麻豆精品视频| 午夜久久网| 国产不卡在线观看视频| 四虎精品在线观看| 国产不卡精品一区二区三区| 毛片成人永久免费视频| 国产91丝袜高跟系列| 黄视频网站在线免费观看| 国产国语对白一级毛片| 久久福利影视| 国产成人啪精品| 国产91精品露脸国语对白| 免费毛片播放| 国产成人啪精品| 黄色福利| 午夜欧美成人久久久久久| 99久久精品国产高清一区二区| 韩国三级香港三级日本三级| 精品久久久久久影院免费| 国产不卡精品一区二区三区| 亚洲第一页乱| 精品视频在线看| 91麻豆国产| 99久久精品国产国产毛片| 国产成人精品影视| 国产一级生活片| 日韩男人天堂| 99色播| 国产一区二区高清视频| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 久草免费在线色站| 精品视频一区二区三区免费| 国产91精品露脸国语对白| 欧美激情一区二区三区视频高清| 日韩一级精品视频在线观看| 高清一级毛片一本到免费观看| 国产91精品露脸国语对白| 亚欧视频在线| 国产高清在线精品一区a| 色综合久久天天综合| 美国一区二区三区| 成人高清免费| 欧美一区二区三区在线观看| 欧美大片毛片aaa免费看| 天天做日日爱| 日韩中文字幕一区| 可以在线看黄的网站| a级毛片免费全部播放| 国产成人精品综合在线| 中文字幕Aⅴ资源网| 国产视频一区在线| 日韩av成人| 毛片电影网| 国产精品免费精品自在线观看| 韩国三级香港三级日本三级| 你懂的国产精品| 日本伦理片网站| 久久精品大片| 一本高清在线| 青青青草影院| 精品国产一区二区三区久| 香蕉视频三级| 四虎影视久久久| 国产成人啪精品| 国产一区二区精品| 青草国产在线|