Amo Chen

Python asyncio shield 函式說明

前陣子研究 asyncio 模組時,恰好看到其中 1 個函式 wait_for() ,該函式在 coroutine 超過時限時,會將其取消(cancel),不過 asyncio 也有提供 1 個函式能夠保護 task 被取消,該函式為 shield() ,官方文件對於 shield() 函式的說明為:

Protect an awaitable object from being cancelled .

簡而言之,能夠防止 awaitables(coroutines, Tasks, Futures) 物件被取消。

不過,實際上該怎麼使用,官方文件並沒有著墨太多,因此本文將實際透過幾個範例摸索如何使用 shield() .

Posted on  Aug 15, 2021  in  Python 程式設計 - 高階  by  Amo Chen  ‐ 2 min read

Python asyncio 從不會到上路

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

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

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

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

用白話文談數學公式 - 熵(entropy)

Claude Shannon 於 Information Theory 研究中提出熵(entropy)的概念,可以說是影響後續機器學習(machine learning)發展相當重要的概念。

熵看似難以理解,但其實是 1 個很簡單的概念,只要了解其背後的意義就能夠輕鬆上手。

Posted on  Jun 12, 2021  in  數學概念  by  Amo Chen  ‐ 3 min read

Elasticsearch 用 random_score 進行隨機抽樣

Elasticsearch 中存放大量的資料(或稱文件 document)時,一般難以片刻就遍訪每 1 筆資料,如果是為了驗證資料格式,或者需要資料進行實驗,此情況下可選擇用抽樣的方式進行,不僅可利用抽樣的方式預估整個資料庫的情況,也可以有效率地以部分資料進行實驗。

本文記錄如何以 function_score 結合 random_score 進行隨機抽樣。

Posted on  May 9, 2021  in  Elasticsearch  by  Amo Chen  ‐ 2 min read

Python multiprocessing 模組進階說明與範例

先前 Python multiprocessing 模組簡單說明與範例 一文簡述 multiprocessing 模組中 Pool, Manager 的使用方法,也講述如何在多個 Processes 之間共享資料,不過仍有許多關於 multiprocessing 中的功能尚未詳述,例如 Process 類別(class), Queue, Pipe 等等,這些功能不僅重要也很實用,是邁向 Python 高階功能的必學項目,因此不可忽視。

本文將透過實際範例了解更多關於 multiprocessing 模組中實用的功能。

Posted on  May 1, 2021  in  Python 程式設計 - 中階  by  Amo Chen  ‐ 11 min read

jq 實戰教學

隨著 JSON 格式作為資料交換格式大行其道,使用工具對 JSON 資料進行操作也逐漸成為家常便飯,各種工具中, jq 可說是一套十分易於操作的 JSON 操作工具。

本文將透過實際資料學習如何使用 jq 。

Posted on  Mar 27, 2021  in  Unix-like 命令列教學  by  Amo Chen  ‐ 14 min read