在並發程式設計的時候,多執行緒和多進程是經常會被使用的兩種模式(此外還有協程等)。 由於CPython 的GIL 限制(Jython 和IronPython 沒有GIL,PyPy 在嘗試去掉GIL),只有取得了GIL 的執行緒才能使用CPU,所以除了需要處理一些可能會阻塞的IO(讀寫檔、存取網路等)之外,基本上沒人會去使用CPython 的多執行緒。因此,本文就來說說更有用的 Python 多進程程式設計。
註:推薦學習:Python影片教學)
本文描述的環境為Linux 作業系統(也適用於大部分POSIX 系統)下的CPython,可能不適用於Windows作業系統或其他的Python 實作。
為了避免歧義,下文用「主進程」或「目前進程」表示創建子進程的那個進程,而不使用「父進程」,除非明確指明了「xx 的父進程」。
與多執行緒程式設計時需要傳遞一個 callable 物件不同的是,多進程程式設計的時候,是將主行程複製到子行程,並不能直接要求子行程執行某個 callable 物件。
在 POSIX 系統中,這個複製操作是由 clone() 和 fork() 系統呼叫來完成的,一般主要使用後者。
如果 fork() 執行成功的話,會分別在主進程和子進程中回傳子進程的 PID 和 0,然後執行程式碼就開始不同了。如果失敗的話(內存不夠、PID 達到上限等),子進程就不會創建,主進程會回傳 -1,errno 會被設定為對應的錯誤碼。
在 CPython 的實作中,os.fork() 主要是對 fork() 函數的封裝,差別在於失敗時拋出 OSError,該例外的 errno 屬性是對應的錯誤碼。
因此,多進程的Python 程式碼大致會長成這樣:
import os try: pid = os.fork() if pid == 0: # 子进程 # 子进程的代码 else: # 主进程 # 主进程的代码 except OSError: # 主进程处理 fork 失败的代码
更多Python相關技術文章,請造訪Python教學欄目進行學習!
以上是python什麼時候用多進程編程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Python在遊戲和GUI開發中表現出色。 1)遊戲開發使用Pygame,提供繪圖、音頻等功能,適合創建2D遊戲。 2)GUI開發可選擇Tkinter或PyQt,Tkinter簡單易用,PyQt功能豐富,適合專業開發。

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...

Python3.6環境下加載Pickle文件報錯:ModuleNotFoundError:Nomodulenamed...


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Dreamweaver Mac版
視覺化網頁開發工具