Amo Chen

Python 3.13 距離解除 GIL 封印又更近一步了!

Python 3.13 預計加入 1 項稱為 “free-threaded” 的實驗功能,這項功能可以將 global interpreter lock (GIL) 限制解除,讓 Python 多執行緒能夠更有效率地使用多核心 CPU 的多核運

Posted on  May 20, 2024  by  Amo Chen  ‐ 1 min read

好文分享 — An Intro to Logging with Python and Loguru

先前我們介紹過 Python 1 個名稱為 structlog 的 logging 套件,本文再介紹 1 個同樣也是專注在 logging 的 Loguru 。 Loguru 與 structlog 同樣追求簡單好用,使用上不需要做什麼設定,就可以跟 JavaScript 的 console.log() 一樣

Posted on  May 19, 2024  by  Amo Chen  ‐ 1 min read

有趣的 Micromouse 科普影片

影片所介紹的電腦鼠,又稱為 mircomouse (有興趣的人可以搜尋 micromouse)。 雖然以前看過 micromouse 的比賽影片,但當時並沒有深思背後的演算法原理,只是當作

Posted on  May 13, 2024  by  Amo Chen  ‐ 1 min read

用 Python 學網路程式設計重要概念 — 從單執行緒到 I/O 多工(I/O multiplexing)

在學習網路程式設計時,每個人都遇過怎麼讓 sever 可以盡可能地處理更多連線的課題,要達到這個目的,多數人直覺應該會想到運用多執行緒、多 processes 的架構,為每個連線建立 1 個新的執行緒或 process 處理,但是這種方法在處理大量連線時,就顯得捉襟見肘,單就多執行緒的解決方案來說,隨著連線數上升,首先就會遇到 CPU context switch 所造成的效能問題,更遑論多 processes 架構會需要使用比多執行緒架構更多資源的問題。

但現代有很多應用僅用單執行緒就能夠處理龐大的連線數,包含 Nginx, Redis 等知名開源軟體,這些軟體是怎麼做到的呢?這就需要談到 1 種稱為 I/O multiplexing 的技術!

本文將教導 1 種稱為 I/O multiplexing 的技術,該技術能夠讓單執行緒處理多個連線,將效能壓榨出來!

p.s. 這個技術還可以與多執行緒、多 processes 架構混用

Posted on  May 12, 2024  in  Python 程式設計 - 中階  by  Amo Chen  ‐ 15 min read