Python

Non-Blocking I/O and I/O Multiplexing

最近花了不少時間在研究 Python concurrency。但大概是以前 OS 沒學好,發現自己對 non-blocking I/O 跟 I/O multiplexing 之類的東西都不是很熟悉。雖然看來都不是太難理解的概念,但在釐清背景知識時還是花了不少時間。為了避免我過一陣子又忘記了,便趁著我記憶還清楚的時候,把我好不容易學會的粗淺知識整理下來。雖然我已經盡可能地多參考一些資料,但由於內容有許多我原本不會或是不熟的東西,如果有任何寫得不正確的部分,還煩請各位不吝指正。 Example: Echo Server 為了方便解釋,就用一個簡單的 echo server 作為例子吧。 首先是

Python

Building Your Own Python Project

最近有同事花了一點時間 survey、並開了個讀書會分享如何建立一個完整的 Python project 環境,乾脆就趁此機會寫篇文章整理一下,希望可以改善我 project 環境一向亂搞的情況(XD)。這篇筆記是基於這場讀書會的內容,略微修改成我自己喜歡的版本。 這篇筆記會包含以下幾個部分: 如何組織一個 Python project 如何建立程式的 unit test 環境 如何用 docstring 生成 document 如何包裝 Python package 但這篇筆記不會教你: 如何寫 Python (? 如何寫 unit

Python

Event Handling with Python

最近工作上常被同事問到的問題:若是現在有許多不同的 events 隨著時間傳進系統,而我們會經常新增或刪除處理這些 event 的 handlers。比較極端的情況,可能會有多個人各自 maintain 多個 modules,每個 module 都定義了一或多個 handlers,但又不希望需要修改到這個 module 以外的 code。應該要怎麼在 Python 中實作這種 event handling 的機制? 在這裡列出我想到的幾種解法,並加上我自己的一些小見解作為參考。 Handler class 一開始,同事的解法是這樣的: