Python 进程 Process 模块 - Python零基础入门教程
生活随笔
收集整理的這篇文章主要介紹了
Python 进程 Process 模块 - Python零基础入门教程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
- 一.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 Processdef 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)# 獲取進程pidprint("進程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 進程 Process 模塊
總結
以上是生活随笔為你收集整理的Python 进程 Process 模块 - Python零基础入门教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jq之animate()操作多个属性
- 下一篇: C语言变量声明和定义 - C语言零基础入