Concurrency_Programming

【Python教學】淺談 Concurrency Programming

發佈於 發佈留言分類: 02 Python 基礎教學03 Python 爬蟲教學10 所有文章

一. 為什麼需要 Concurrency ? 簡單來說 Concurrency Programming 就是能在同一時刻做兩件以上事情的能力,例如使用不同 CPU 分別運行程式來提高效率 ,或是當程式在等待執行結果時 (如等待 request 請求),先執行其他程式函式 (Coroutine),把浪費的 CPU 週期充分利用! 我們來看看 Golang 開發者之一 Rob Pike 對 Concurrency 的定義: Concurrency is about dealing with lots of things at once.Parallelism is about doing lots of things at once. Concurrency is not Parallelism […]

python_threading_processing

【Python教學】淺談 Multi-processing & Multi-threading 使用方法

發佈於 發佈留言分類: 03 Python 爬蟲教學10 所有文章

一. Multi-processing 和Multi-threading 的優缺點: Multi-processing (多處理程序/多進程): 資料在彼此間傳遞變得更加複雜及花時間,因為一個 process 在作業系統的管理下是無法去存取別的 process 的 memory 適合需要 CPU 密集,像是迴圈計算 Multi-threading (多執行緒/多線程): 資料彼此傳遞簡單,因為多執行緒的 memory 之間是共用的,但也因此要避免會有 Race Condition 問題 適合需要 I/O 密集,像是爬蟲需要時間等待 request 回覆 關於多執行緒在 Python 中受 GIL 的限制,推薦延伸閱讀:【Python教學】淺談 GIL & Thread-safe &a […]