大幅提升執行效率:解析Python多執行緒和多進程的效能差異與使用情境

閱讀時間約 2 分鐘

最近在調整跟優化效能時,又來複習了 Multi-threading 和 Multiprocessing 的概念,在面對大數據時,能夠有效利用多核心處理器的能力,對於提升程式執行效能至關重要。

Python 提供多線程(Multi-threading) 和多進程 (Multiprocessing) 的功能,讓開發者可以很好的去運用硬體資源,加速任務執行,以下討論這兩功能的優勢與差異,以及適合的使用情境。

bing 眼裡的 multi-threading / multi-process

bing 眼裡的 multi-threading / multi-process

多線程(Multi-threading)與多進程(Multiprocessing)的概念

多線程與多進程都是用於實現並行處理的技術,但其差異在於處理資源的方式。-

  • 多線程是指在同一進程中運行多個執行緒,共享相同的記憶體空間
  • 多進程則是啟動多個獨立的進程,每個進程擁有獨立的記憶體空間。

由於Python的全局解釋器(GIL)限制了同一進程中只有一個執行緒可以執行Python指令,多線程在某些情況下可能無法充分利用多核處理器,而多進程可以避免這個限制。(GIL 概念可以參考底下連結)

所以有些時候,multi-threading 無法完全發揮到它的功能。

使用時機

多線程(Multi-threading)

多線程適用於I/O密集型任務,例如網路請求、檔案處理等。Python的threading模組提供了多線程的支援。使用多線程的好處在於:I/O 密集型任務: 多執行緒適用於處理需要等待外部資源(如網路請求、檔案讀寫、資料庫查詢等)的工作。因為執行緒在等待資源時,GIL的影響相對較小,而等待外部資源的時間佔據大部分,多執行緒可以更有效地利用等待時間。

  • 使用多線程:
    • I/O密集型任務,如網路請求、檔案處理。
    • 介面應用程式中的非同步任務,如UI更新。
    • 使用threading.Thread類別來建立執行緒,避免GIL限制的影響。
  • 使用多進程:
    • CPU密集型任務,如運算密集型計算、圖像處理。
    • 使用multiprocessing.Process類別建立進程,充分利用多核心處理器。

參考資料: Python的全局解釋器(GIL)

31會員
36Content count
歡迎來到《桃花源記》專欄。這裡不僅是一個文字的集合,更是一個探索、夢想和自我發現的空間。在這個專欄中,我們將一同走進那些隱藏在日常生活中的"桃花源"——那些讓我們心動、讓我們反思、讓我們找到內心平靜的時刻和地方
留言0
查看全部
發表第一個留言支持創作者!
Karen的沙龍 的其他內容
How to utilize batch input and multi-processing techniques to accelerate feature engineering? 問題 在進行特徵工程的過程中,我們通常需要處理各種各樣的數據,並轉換它們成有意義的特徵,以供後續的模型訓練
How to access feature names in a trained XGB model ? 故事是這樣的... 在接手某個專案中,取得了一份已經訓練好的 pickle 檔案記載著 XGBoost model weight ,但因為 feature engineering 的程式碼交
matplotlib 無法顯示中文,看了很多篇教學文都無效 mac 解法可以參考這篇...
在進行開發工作時,可能會使用不同的 Git 帳號做登入和推送的情形,例如: 公司的 Git 帳號和個人的帳號,這樣做的好處是為了確保開發工作能清楚劃分,所以需要做切換帳號的動作,特別是在不同的專案間切換 commit 的對象,因此有了這篇文紀錄這個過程。
網路爬蟲(web crawler),也叫網路蜘蛛(spider) 是一個強大的自動化工具,可以自由瀏覽、擷取訪問網頁的各項資訊,例如:新聞文章、電商商品價格,當專案中需要添加外部數據或進行大量資料收集時,網路爬蟲就是一個非常實用的工具。
上篇我們在安裝 VirtualBox 練習使用虛擬化切割出獨立空間做開發,那除了使用 VM 達到虛擬化外,另一個輕量級的虛擬化技術 - 容器化。 要使用容器,那就不能不認識 Docker
How to utilize batch input and multi-processing techniques to accelerate feature engineering? 問題 在進行特徵工程的過程中,我們通常需要處理各種各樣的數據,並轉換它們成有意義的特徵,以供後續的模型訓練
How to access feature names in a trained XGB model ? 故事是這樣的... 在接手某個專案中,取得了一份已經訓練好的 pickle 檔案記載著 XGBoost model weight ,但因為 feature engineering 的程式碼交
matplotlib 無法顯示中文,看了很多篇教學文都無效 mac 解法可以參考這篇...
在進行開發工作時,可能會使用不同的 Git 帳號做登入和推送的情形,例如: 公司的 Git 帳號和個人的帳號,這樣做的好處是為了確保開發工作能清楚劃分,所以需要做切換帳號的動作,特別是在不同的專案間切換 commit 的對象,因此有了這篇文紀錄這個過程。
網路爬蟲(web crawler),也叫網路蜘蛛(spider) 是一個強大的自動化工具,可以自由瀏覽、擷取訪問網頁的各項資訊,例如:新聞文章、電商商品價格,當專案中需要添加外部數據或進行大量資料收集時,網路爬蟲就是一個非常實用的工具。
上篇我們在安裝 VirtualBox 練習使用虛擬化切割出獨立空間做開發,那除了使用 VM 達到虛擬化外,另一個輕量級的虛擬化技術 - 容器化。 要使用容器,那就不能不認識 Docker
你可能也想看
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
電商與雲服務巨頭亞馬遜 Amazon,在上周發布了最新 2023 第二季的財報。在發布財報之後,亞馬遜的股價大漲,顯然市場對於這份報告的內容是滿意的。究竟市場在本季的財報中看到什麼?亞馬遜這份財報真的完全讓人高枕無憂嗎?就讓本期科技巨頭解碼,帶領大家一起解讀這份最新財報。
Thumbnail
最近看到了很多很多優秀的簡歷,感受到了長江後浪打算拍死前浪的壓力,而關於簡歷,這邊還是簡單提出一些建議。
Thumbnail
Obsidian是所有想要提升學術研究效率的學者,碩博士生都必備的數位筆記軟體。 使用Obsidian,可以協助我們進行學術發表需要的深度思考與論文內容產出,同時讓自己的學術工作流更順暢! 在過去的25個月裡,Obsidian已經讓我的學術工作效率大大提升,其中3個最佳實務如下: 最佳實務1 - 平
Thumbnail
如何應用人工智慧技術進行PDF文檔分析,從而大幅提升學習效率和工作效率。通過Sharly AI的技術,使用者可以快速找到和理解重要的信息,節省閱讀大量技術文檔所需的時間和精力,提高工作效率和信息的準確性。
Thumbnail
西蒙學習法:對於有一定基礎的人來說,只要肯認真下功夫,在六個月內就可以掌握任何一門學問。在這篇文章中用三個關鍵、一個公式,讓你學會西蒙學習法。
Thumbnail
我曾聽過孫治華老師、于為暢老師、大人學的Joe都講過同一個學習概念:去上課,不只要跟老師學教學內容 (看得到的),還要體驗老師的運課方式 (看不到的)。在參加其他老師的教學課程中,我也將體驗非常棒的做法記起來,並運用在自己的線上讀書會。這篇文章分享我的線上讀書會運課方式以及學習來源。
Thumbnail
找到適合自己的軟體是非常開心的事情,以下 10 款我都用了超過 1 年(除了 Heptabase 和 Omnifocus),對我的工作與日常內容創作幫助非常大,分享給大家。我將「why (為什麼使用)」與「how (我如何使用)」的重點依序寫在每個軟體後面,有興趣的朋友可以 Google 關鍵字
Thumbnail
在 SimplyBook.me 近三年來接觸各類產業經營者時,我們發現無論來自什麼產業的店家,都非常希望透過品牌專屬 App 累積熟客名單。經營者的聲音,我們聽到了!一直以來,SimplyBook.me 的使命是希望串連企業/店家與顧客之間的溝通,讓一切從簡又不失品牌專業!因此我們推出了品牌專屬
Thumbnail
為了治癒拖延症,很多人會使用「番茄鐘工作法」來提升工作效率。然而,根據我的經驗,如果缺乏整體的作息規劃,端不出幾顆番茄鐘時間來執行任務,工作效率成長的幅度終究有限。 要如何進行整體的作息規劃呢?很簡單,只要10分鐘,完成這幾張表格,馬上就能逮到偷走你的「番茄」的光陰小偷了!
Thumbnail
【如何透過寫作創造出最好的點子、洞見和內容】自由書寫術是什麼?買《自由書寫術》這本書之前,我對自己自問自答:為什麼想要動手寫作?倒也不是想成為一名作家,而是有苦於腦中有許多所學所聞,其實很容易過目即忘,人的記憶力真的是不怎麼靠譜的東西。
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
電商與雲服務巨頭亞馬遜 Amazon,在上周發布了最新 2023 第二季的財報。在發布財報之後,亞馬遜的股價大漲,顯然市場對於這份報告的內容是滿意的。究竟市場在本季的財報中看到什麼?亞馬遜這份財報真的完全讓人高枕無憂嗎?就讓本期科技巨頭解碼,帶領大家一起解讀這份最新財報。
Thumbnail
最近看到了很多很多優秀的簡歷,感受到了長江後浪打算拍死前浪的壓力,而關於簡歷,這邊還是簡單提出一些建議。
Thumbnail
Obsidian是所有想要提升學術研究效率的學者,碩博士生都必備的數位筆記軟體。 使用Obsidian,可以協助我們進行學術發表需要的深度思考與論文內容產出,同時讓自己的學術工作流更順暢! 在過去的25個月裡,Obsidian已經讓我的學術工作效率大大提升,其中3個最佳實務如下: 最佳實務1 - 平
Thumbnail
如何應用人工智慧技術進行PDF文檔分析,從而大幅提升學習效率和工作效率。通過Sharly AI的技術,使用者可以快速找到和理解重要的信息,節省閱讀大量技術文檔所需的時間和精力,提高工作效率和信息的準確性。
Thumbnail
西蒙學習法:對於有一定基礎的人來說,只要肯認真下功夫,在六個月內就可以掌握任何一門學問。在這篇文章中用三個關鍵、一個公式,讓你學會西蒙學習法。
Thumbnail
我曾聽過孫治華老師、于為暢老師、大人學的Joe都講過同一個學習概念:去上課,不只要跟老師學教學內容 (看得到的),還要體驗老師的運課方式 (看不到的)。在參加其他老師的教學課程中,我也將體驗非常棒的做法記起來,並運用在自己的線上讀書會。這篇文章分享我的線上讀書會運課方式以及學習來源。
Thumbnail
找到適合自己的軟體是非常開心的事情,以下 10 款我都用了超過 1 年(除了 Heptabase 和 Omnifocus),對我的工作與日常內容創作幫助非常大,分享給大家。我將「why (為什麼使用)」與「how (我如何使用)」的重點依序寫在每個軟體後面,有興趣的朋友可以 Google 關鍵字
Thumbnail
在 SimplyBook.me 近三年來接觸各類產業經營者時,我們發現無論來自什麼產業的店家,都非常希望透過品牌專屬 App 累積熟客名單。經營者的聲音,我們聽到了!一直以來,SimplyBook.me 的使命是希望串連企業/店家與顧客之間的溝通,讓一切從簡又不失品牌專業!因此我們推出了品牌專屬
Thumbnail
為了治癒拖延症,很多人會使用「番茄鐘工作法」來提升工作效率。然而,根據我的經驗,如果缺乏整體的作息規劃,端不出幾顆番茄鐘時間來執行任務,工作效率成長的幅度終究有限。 要如何進行整體的作息規劃呢?很簡單,只要10分鐘,完成這幾張表格,馬上就能逮到偷走你的「番茄」的光陰小偷了!
Thumbnail
【如何透過寫作創造出最好的點子、洞見和內容】自由書寫術是什麼?買《自由書寫術》這本書之前,我對自己自問自答:為什麼想要動手寫作?倒也不是想成為一名作家,而是有苦於腦中有許多所學所聞,其實很容易過目即忘,人的記憶力真的是不怎麼靠譜的東西。