快轉到主要內容

Python

Multiprocessing, Multithreading and Asyncio in Python Part 1 - Basic Concept

·2120 字·5 分鐘
Python 的效能瓶頸在幾年前一直為人詬病, 但在開發者的努力之下,Python 3.4 開始出現了 Asyncio 可以在特定情境下提升效能, 到了 Python 3.13 更出現了可選擇性關閉 GIL 的 Free-threaded (PEP-703) 設計, 結合過去的 Multiprocessing 和 Multithreading, 我整理了一下這三項技術適合的原理、差異和使用情境做了幾篇紀錄。 這一篇先簡單介紹三者的基本概念和適用情境。

Iron Counsel:企業級 RAG 架構與對話式 AI

以 RAG 技術為核心的對話式 AI 應用,在複雜資料集上實現精準的 LLM 推論。技術架構:基於 GCP 的無伺服器 FastAPI 後端(透過 Terraform 建置)、本地 ONNX 嵌入模型、Firestore 向量搜尋,以及 LangChain 編排框架。

企業標準:非同步 FastAPI 架構

生產就緒的非同步 Python 微服務樣板,專為標準化企業後端開發、消除傳統 I/O 瓶頸而設計。透過整合 Docker 並強制要求 95% 測試覆蓋率基準,在組織內建立嚴格的工程文化。

Pyenv Notes

·550 字·2 分鐘
pyenv 的功能和使用的原因 # pyenv 是用來在系統裡安裝各種不同版本的 python, 並能夠方便的切換 python 版本的工具。

Python Coroutine Asyncio

·1102 字·3 分鐘
在出現 asyncio 前, 當一隻 Python 程式有很多需要並行執行的 task, 想要提升程式效能, 只能選用 multiprocessing 或 threading; Python 3.4 之後又多出了 asyncio 的選擇。 asyncio 可以用來撰寫 coroutines, 並使用 event loop 並行執行 coroutines, 減少程式不必要的等待時間以提升效能。

Pipenv Notes

·660 字·2 分鐘
Why Pipenv # 當有很多 Python project 要維護, 不同的 project 有可能使用相同的 python libraries 的不同版本, 不使用 virtual environment 而將所有的 python modules 都裝在自己的機器上就會造成版本衝突。 過去使用 virtualenv + requirement.txt 的機制可以在不同的 project 使用同一個套件的不同版本, 也能夠讓新加入的開發者或 production 環境可以快速安裝 project 需要的套件,