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

一. Multi-processing 和Multi-threading 的優缺點:

  • Multi-processing (多處理程序/多進程):
    1. 資料在彼此間傳遞變得更加複雜及花時間,因為一個 process 在作業系統的管理下是無法去存取別的 process 的 memory
    2. 適合需要 CPU 密集,像是迴圈計算
  • Multi-threading (多執行緒/多線程):
    1. 資料彼此傳遞簡單,因為多執行緒的 memory 之間是共用的,但也因此要避免會有 Race Condition 問題
    2. 適合需要 I/O 密集,像是爬蟲需要時間等待 request 回覆

關於多執行緒在 Python 中受 GIL 的限制,推薦延伸閱讀:【Python教學】淺談 GIL & Thread-safe & Atomic operation

二. Multi-threading 使用方法:

Multi-threading 又稱多執行緒或多線程,其使用方法如下

▍安裝或引用套件:

使用 threading模組,不用特別安裝即可使用,是 Python 標準函式庫裡面的模組。

▍設定介紹:

如下我們建立三個線程(t1 , t2 , t3),看要新增幾個可以再增加 t4,t5……

  1. target=main 就是在呼叫上面所寫的 main 主程式
  2. args = (url_list1,1) 是放你要給與 main 的參數
  3. t.start 這邊會依順序開始啟動線程

接下來就是跑跑看程式如果都沒有錯誤的話,恭喜你完成了第一隻 python 多線程

或是寫在 Class 類裡面:

三. Multi-processing 使用方法:

Multi-processing 又稱多處理程序或多進程,其使用方法如下

▍安裝或引用套件:
使用 multiprocessing模組,不用特別安裝即可使用,是 Python 標準函式庫裡面的模組。

▍設定介紹:
這邊建立三個多進程分別是 p1, p2, p3,可以再自行增加,寫法跟剛剛多線程其實只差在把 threading.Thread 換成 mp.Process,其他道理都相同,快開始試試看吧!

或是寫在 Class 類裡面:

最後~

▍關於與 Concurrency Programming 相關其他文章,可以參考:

▍關於 Async IO 相關其他文章,可以參考:

那 【爬蟲筆記】【Python教學】淺談 Multi-processing & Multi-threading 使用方法 的介紹就到這邊告一個段落囉!有任何問題可以在以下留言~

有關 Max行銷誌的最新文章,都會發佈在 Max 的 Facebook 粉絲專頁,如果想看最新更新,還請您按讚或是追蹤唷!

在〈【Python教學】淺談 Multi-processing & Multi-threading 使用方法〉中有 4 則留言

  1. HI 版主你好
    上列程式碼中,第三、十七行 有少空格喔
    感謝分享

    import threading

    class Dosomething:
    def__init__(self):
    self.t_list = []

    def dosomething(self, i):
    print(‘第’ + str(i))
    print(‘執行緒 ID:’ + str(threading.get_ident()))

    def run(self):

    for i inrange(5):
    self.t_list.append(
    threading.Thread(target=self.dosomething, args=(str(i))))
    self.t_list[i].start()

    for i inself.t_list:
    i.join()

    if __name__ == “__main__”:
    d = Dosomething()
    d.run()

留言功能已關閉。