Skip to content

asyncio

Fluent Python 讀書筆記(六)

此筆記適用 Python 3.4,部份已不相容後續版本的套件與 API

以 futures 撰寫並行

  • futures —— 非同步執行某項操作的物件
  • 網路 I/O 涉及高度延遲,須要用到並行來有效處理
  • 在公用 Web 測試並行 HTTP 用戶端,你可能會無意中啟動一個阻斷服務攻擊(DOS),或被懷疑在做這件事…要測試複雜的用戶端,你應該設定自己的測試伺服器(作法說明
  • requests 已經被視為 Python 式 API 的典範,它比標準函式庫 urllib.request 還要強大
  • concurrent.futures 主要功能是能讓你分別提交(submit)在不同執行緒/程序執行的可呼叫物(callables),實作於 ThreadPoolExecutorProcessPoolExecutor 的介面(分別在內部管理一個 worker thread pool 及 process pool)

多執行緒並行起手勢

使用單純迴圈來取代 ThreadPoolExecuter.map

使用手動呼叫 result 取代隱式的 next 呼叫(阻塞式):

使用 as_completed 取代阻塞式的結果查詢(完成後才產出),必須放在 Context Manager 區塊內,因為預設的 __exit__ 會阻塞:

Read More »Fluent Python 讀書筆記(六)