目錄
- 一.Python 行程 Process 簡介
- 二.Python 行程 Process 模塊
- 三.Python 行程 Process 函式介紹
- 四.Python 行程 Process 使用
- 五.Python 行程 Process 小竅門
- 六.猜你喜歡
零基礎 Python 學習路線推薦 : Python 學習目錄 >> Python 基礎入門
一.Python 行程 Process 簡介
行程 Process 是對各種資源管理的集合,包含對各種資源的呼叫、記憶體的管理、網路介面的呼叫;一個行程 Process 可以包含多個子行程,啟動一個行程的時候會自動創建一個執行緒,行程里的第一個執行緒就是主執行緒(即Python __name__ == ‘__main__’);
二.Python 行程 Process 模塊
對于執行緒操作可以用 threading 模塊,那么對于行程的創建 Python 同樣也提供了 Process 模塊,創建行程時需要匯入該模塊,語法如下:
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿說編程
@Blog(個人博客地址): www.codersrc.com
@File:Python 行程 Process 模塊.py
@Time:2021/05/06 07:37
@Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!
"""
# 匯入行程模塊
from multiprocessing import Process
'''
引數介紹:
group — 引數未使用,默認值為None;
target — 表示呼叫物件,即子行程要執行的任務(函式名字);
args — 子行程對應函式的引數,并且型別是元組tuple;
kwargs — 子行程對應函式的引數,并且型別是字典dict,如kwargs = {‘name’:Jack, ‘age’:18};
name — 子行程名稱;
回傳值:回傳行程實體物件;
'''
# 創建行程
p = Process(group=None, target=None, name=None, args=(), kwargs={})
三.Python 行程 Process 函式介紹
其實行程 Process 的函式和**執行緒 threading** 類似,具體如下:
- 1.start — 啟動行程;
- 2.terminate — 強制終止行程,不會進行任何清理操作,如果該行程終止前,創建了子行程,那么該子行程在其強制結束后變為僵尸行程;如果該行程還保存了一個鎖那么也將不會被釋放,進而導致死鎖,使用時,要注意;
- 3.is_alive — 判斷某行程是否存活,存活回傳 True ,否則 False ;
- 4.join([timeout]) — 主執行緒等待子執行緒終止,timeout 為可選擇超時時間;需要強調的是,p.join 只能 join 住 start 開啟的行程,而不能 join 住 run 開啟的行程 ;
- 5.daemon — 默認值為 False ,如果設定為 True,代表該行程為后臺守護行程;當該行程的父行程終止時,該行程也隨之終止;并且設定為 True 后,該行程不能創建子行程,設定該屬性必須在 start 之前;
- 6.name — 行程名稱;
- 7.pid — 行程 ID 標識,pid,值得注意的是:如果在 start 函式之前獲取 pid 默認為 None ,因為行程還未創建,獲取不到 pid ;
- 8.exitcode — 行程運行時為 None,如果為 -N ,表示被信號 N 結束了;
- 9.authkey — 行程身份驗證,默認是由 os.urandom 隨機生成 32 字符的字串,這個鍵的用途是設計涉及網路連接的底層行程間的通信提供安全性,這類連接只有在具有相同身份驗證才能成功;
四.Python 行程 Process 使用
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿說編程
@Blog(個人博客地址): www.codersrc.com
@File:Python 行程 Process 模塊.py
@Time:2021/05/06 07:37
@Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!
"""
from multiprocessing import Process
def people_info(*args,**kwargs):
print(args,kwargs)
def main():
# 資訊串列
list_info = [{"name":"zhangsan","height":"175cm"},
{"name": "lisi", "height": "155cm"},
{"name": "wangwu", "height": "195cm"},
{"name": "liqi", "height": "166cm"},
{"name": "wangba", "height": "125cm"},]
# 創建行程
for i in range(5):
p = Process(target=people_info,args=(i,),kwargs=list_info[i])
# 設定為守護行程,必須設定在start函式之前,否則會產生例外
# 默認為False,即主行程會等待子行程結束之后才結束,
# 如果設定為True,主行程結束之后所有的子行程自動結束,不管子行程是否已經執行完所有任務
# p.daemon = True
# 啟動行程
p.start()
# 獲取行程pid,如果在start函式之前獲取pid,默認為None,因為行程還沒啟動
print("行程process pid = ",p.pid)
# 獲取行程名字
print("行程process name = ",p.name)
# 獲取行程pid
print("行程process exitcode = ",p.exitcode)
if __name__ == "__main__":
main()
'''
輸出結果:
行程process pid = 2600
行程process name = Process-1
行程process exitcode = None
行程process pid = 4372
行程process name = Process-2
行程process exitcode = None
行程process pid = 14124
行程process name = Process-3
行程process exitcode = None
行程process pid = 10920
行程process name = Process-4
行程process exitcode = None
行程process pid = 4892
行程process name = Process-5
行程process exitcode = None
(0,) {'name': 'zhangsan', 'height': '175cm'}
(1,) {'name': 'lisi', 'height': '155cm'}
(2,) {'name': 'wangwu', 'height': '195cm'}
(3,) {'name': 'liqi', 'height': '166cm'}
(4,) {'name': 'wangba', 'height': '125cm'}
'''
五.Python 行程 Process 小竅門
Python 的 os 模塊封裝了常見的系統呼叫,其中就包括:
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿說編程
@Blog(個人博客地址): www.codersrc.com
@File:Python 行程 Process 模塊.py
@Time:2021/05/06 07:37
@Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!
"""
os.fork() 創建子行程
os.getpid() 獲取自身 ID
os.getppid() 獲取父行程 ID
關于行程 Process 創建就介紹到這里,不知道大家發現沒有,行程 Process 的創建和執行緒 threading 的創建非常相似,那么 Python 行程和執行緒到底又有什么區別呢?關于 Python 行程和執行緒的區別請參考:Python 行程 Process 與執行緒 threading 的區別
六.猜你喜歡
- Python 條件推導式
- Python 串列推導式
- Python 字典推導式
- Python 函式宣告和呼叫
- Python 不定長引數 *argc/**kargcs
- Python 匿名函式 lambda
- Python return 邏輯判斷運算式
- Python 字串/串列/元組/字典之間的相互轉換
- Python 區域變數和全域變數
- Python type 函式和 isinstance 函式區別
- Python is 和 == 區別
- Python 可變資料型別和不可變資料型別
- Python 淺拷貝和深拷貝
- Python 檔案讀寫操作
- Python 例外處理
- Python 模塊 import
- Python __name__ == ‘__main__’詳細解釋
- Python 執行緒創建和傳參
- Python 執行緒互斥鎖 Lock
- Python 執行緒時間 Event
- Python 執行緒條件變數 Condition
- Python 執行緒定時器 Timer
- Python 執行緒信號量 Semaphore
- Python 執行緒障礙物件 Barrier
- Python 執行緒佇列 Queue – FIFO
- Python 執行緒佇列 LifoQueue – LIFO
- Python 執行緒優先佇列 PriorityQueue
- Python 執行緒池 ThreadPoolExecutor(一)
- Python 執行緒池 ThreadPoolExecutor(二)
- Python 行程 Process 模塊
- Python 行程 Process 與執行緒 threading 區別
- Python 行程間通信 Queue / Pipe
未經允許不得轉載:猿說編程 ? Python 行程 Process 模塊
本文由博客 - 猿說編程 猿說編程 發布!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/288672.html
標籤:Python
