MyApollo

MyApollo

輕鬆學習程式語言和最新技術趨勢,踏上從小工到大師之旅!

60 秒新知

HTTP header "Connection: keep-alive" 到底是什麼?

根據 HTTP/1.0 版的標準,每 1 個連線都應該在 server 回應(response)完之後關閉,然而 HTTP 是基於 TCP 的通訊協定,每次建立連線都需要做 1 次 TCP 三向交握(Thr

Posted on  May 22, 2024  by  Amo Chen  ‐ 2 min read

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

最新文章

用 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

帶你搞懂 Python 的 Iterable, Iterator 與 Generator

Python 的 Iterable, Iterator 與 Generator 是經常會讓人產生混淆的事物,因為這 3 個都可以用 for 迴圈走訪,因此有些熟悉 Python 的面試官很喜歡問這 3 者之間的差異,追根究底是因為對這 3 者不熟悉的話,很容易寫出類似以下的低效率程式碼:

set([x for x in iterator])

本文將透過實際範例帶大家認識 Iterable, Iterator 與 Generator! 再也不搞混!

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

熱門文章

LangChain 怎麼玩?入門教學篇

AI 時代,打不贏就加入它!

所以個人認為學會 LangChain 之類的框架,在未來可能會是每個程式設計師不可或缺的技術,也就是說除了寫程式之外,你可能還需要用 LangChain 之類的框架做出適合自己的工具,幫助提升效率與生產力,藉此增加自身的職場優勢。

本文將介紹 LangChain 結合 llama 語言模型如何使用的入門教學。

p.s. 使用開源語言模型的 llama 的好處在於不用付費,輸出品質也有一定保證

Posted on  Feb 2, 2024  in  LangChain , Python 程式設計 - 高階  by  Amo Chen  ‐ 5 min read

Python asyncio 從不會到上路

自從 Python 3.4 推出 asyncio 模組之後,開發者在提升 Python 程式效能的解決方案上又多了 1 種選擇。

不過相較於較為人所熟知的 multiprocessingthreading 而言,大多數初學者並不習慣非同步式(asynchronous)式的開發思維,但只要能夠掌握 asyncio 模組中幾點重要的概念,即使是從未接觸過的初學者,也能夠慢慢掌握 asyncio 的使用方式。

本文將重點介紹 asyncio 模組中的重要概念,並透過實際範例理解 asyncio 的運作,從而學會如何使用 asyncio 模組。

Last updated on  Oct 1, 2023  in  Python 程式設計 - 高階  by  Amo Chen  ‐ 13 min read

用範例輕鬆學 Python multiprocessing 模組

Python 內建的 multiprocessing 是相當重要的模組,如果有平行(parallelism)處理的需求,除了內建的 threading 模組之外,另一個就屬 multiprocessing 。

使用 multiprocessing 的好處在於能夠很大程度避開 Python GIL 對於程式效能的影響,但壞處則是對於記憶體的耗用程度也較高,即便如此也是一個必須了解的模組。

本篇將實際透過幾個範例學習如何使用 multiprocessing 模組。

Last updated on  Aug 8, 2023  in  Python 程式設計 - 初階  by  Amo Chen  ‐ 5 min read