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
Python 3.13 預計加入 1 項稱為 “free-threaded” 的實驗功能,這項功能可以將 global interpreter lock (GIL) 限制解除,讓 Python 多執行緒能夠更有效率地使用多核心 CPU 的多核運
Posted on May 20, 2024 by Amo Chen ‐ 1 min read
先前我們介紹過 Python 1 個名稱為 structlog 的 logging 套件,本文再介紹 1 個同樣也是專注在 logging 的 Loguru 。 Loguru 與 structlog 同樣追求簡單好用,使用上不需要做什麼設定,就可以跟 JavaScript 的 console.log() 一樣
Posted on May 19, 2024 by Amo Chen ‐ 1 min read
最近在 macOS 上面做 HTTP server 的壓力測試時,發現一件怪事: 「不論怎麼調整 Sever 的程式碼,壓力測試時都只能處理 16,000 個左右的 requests 」 一查才知道 macOS 大約只有 16,000 個 ports 可以供連
Posted on May 18, 2024 by Amo Chen ‐ 1 min read
相信許多人其實對於 asyncio 還處於一知半解的狀態,個人認為原因有幾個: Python 是在 3.4 之後才推出 asyncio 模組,相較於 multiprocessing, threading 等模組來的晚一些,多數人會傾向使用熟悉的技
Posted on May 17, 2024 by Amo Chen ‐ 1 min read
個人蠻喜歡這種不用扯到太多數學,但又能夠把深奧的事物講得夠淺顯明白的文章,畢竟不是每個人都能像海豚一樣在數學公式的大海之中恣意遨遊,所以如何
Posted on May 16, 2024 by Amo Chen ‐ 2 min read
你知道台灣有可以免費使用的繁體中文大語言模型嗎? TAIDE 是由國科會、國家實驗研究院以及數位發展部、中研院以及各領域專家們,所協力推出的繁體中文語言
Posted on May 14, 2024 by Amo Chen ‐ 1 min read
影片所介紹的電腦鼠,又稱為 mircomouse (有興趣的人可以搜尋 micromouse)。 雖然以前看過 micromouse 的比賽影片,但當時並沒有深思背後的演算法原理,只是當作
Posted on May 13, 2024 by Amo Chen ‐ 1 min read
在學習網路程式設計時,每個人都遇過怎麼讓 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