Python 进程 Process 模块 - Python零基础入门教程
目錄
- 一.Python 進(jìn)程 Process 簡介
- 二.Python 進(jìn)程 Process 模塊
- 三.Python 進(jìn)程 Process 函數(shù)介紹
- 四.Python 進(jìn)程 Process 使用
- 五.Python 進(jìn)程 Process 小竅門
- 六.猜你喜歡
零基礎(chǔ) Python 學(xué)習(xí)路線推薦 : Python 學(xué)習(xí)目錄 >> Python 基礎(chǔ)入門
一.Python 進(jìn)程 Process 簡介
進(jìn)程 Process 是對(duì)各種資源管理的集合,包含對(duì)各種資源的調(diào)用、內(nèi)存的管理、網(wǎng)絡(luò)接口的調(diào)用;一個(gè)進(jìn)程 Process 可以包含多個(gè)子進(jìn)程,啟動(dòng)一個(gè)進(jìn)程的時(shí)候會(huì)自動(dòng)創(chuàng)建一個(gè)線程,進(jìn)程里的第一個(gè)線程就是主線程(即Python __name__ == ‘__main__’);
二.Python 進(jìn)程 Process 模塊
對(duì)于線程操作可以用 threading 模塊,那么對(duì)于進(jìn)程的創(chuàng)建 Python 同樣也提供了 Process 模塊,創(chuàng)建進(jìn)程時(shí)需要導(dǎo)入該模塊,語法如下:
# !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:猿說編程 @Blog(個(gè)人博客地址): www.codersrc.com @File:Python 進(jìn)程 Process 模塊.py @Time:2021/05/06 07:37 @Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅(jiān)持不懈地積累!"""# 導(dǎo)入進(jìn)程模塊 from multiprocessing import Process''' 參數(shù)介紹:group — 參數(shù)未使用,默認(rèn)值為None;target — 表示調(diào)用對(duì)象,即子進(jìn)程要執(zhí)行的任務(wù)(函數(shù)名字);args — 子進(jìn)程對(duì)應(yīng)函數(shù)的參數(shù),并且類型是元組tuple;kwargs — 子進(jìn)程對(duì)應(yīng)函數(shù)的參數(shù),并且類型是字典dict,如kwargs = {‘name’:Jack, ‘a(chǎn)ge’:18};name — 子進(jìn)程名稱;返回值:返回進(jìn)程實(shí)例對(duì)象; '''# 創(chuàng)建進(jìn)程 p = Process(group=None, target=None, name=None, args=(), kwargs={})三.Python 進(jìn)程 Process 函數(shù)介紹
其實(shí)進(jìn)程 Process 的函數(shù)和**線程 threading** 類似,具體如下:
- 1.start — 啟動(dòng)進(jìn)程;
- 2.terminate — 強(qiáng)制終止進(jìn)程,不會(huì)進(jìn)行任何清理操作。如果該進(jìn)程終止前,創(chuàng)建了子進(jìn)程,那么該子進(jìn)程在其強(qiáng)制結(jié)束后變?yōu)榻┦M(jìn)程;如果該進(jìn)程還保存了一個(gè)鎖那么也將不會(huì)被釋放,進(jìn)而導(dǎo)致死鎖,使用時(shí),要注意;
- 3.is_alive — 判斷某進(jìn)程是否存活,存活返回 True ,否則 False ;
- 4.join([timeout]) — 主線程等待子線程終止。timeout 為可選擇超時(shí)時(shí)間;需要強(qiáng)調(diào)的是,p.join 只能 join 住 start 開啟的進(jìn)程,而不能 join 住 run 開啟的進(jìn)程 ;
- 5.daemon — 默認(rèn)值為 False ,如果設(shè)置為 True,代表該進(jìn)程為后臺(tái)守護(hù)進(jìn)程;當(dāng)該進(jìn)程的父進(jìn)程終止時(shí),該進(jìn)程也隨之終止;并且設(shè)置為 True 后,該進(jìn)程不能創(chuàng)建子進(jìn)程,設(shè)置該屬性必須在 start 之前;
- 6.name — 進(jìn)程名稱;
- 7.pid — 進(jìn)程 ID 標(biāo)識(shí),pid,值得注意的是:如果在 start 函數(shù)之前獲取 pid 默認(rèn)為 None ,因?yàn)檫M(jìn)程還未創(chuàng)建,獲取不到 pid ;
- 8.exitcode — 進(jìn)程運(yùn)行時(shí)為 None,如果為 -N ,表示被信號(hào) N 結(jié)束了;
- 9.authkey — 進(jìn)程身份驗(yàn)證,默認(rèn)是由 os.urandom 隨機(jī)生成 32 字符的字符串。這個(gè)鍵的用途是設(shè)計(jì)涉及網(wǎng)絡(luò)連接的底層進(jìn)程間的通信提供安全性,這類連接只有在具有相同身份驗(yàn)證才能成功;
四.Python 進(jìn)程 Process 使用
# !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:猿說編程 @Blog(個(gè)人博客地址): www.codersrc.com @File:Python 進(jìn)程 Process 模塊.py @Time:2021/05/06 07:37 @Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅(jiān)持不懈地積累!"""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"},]# 創(chuàng)建進(jìn)程for i in range(5):p = Process(target=people_info,args=(i,),kwargs=list_info[i])# 設(shè)置為守護(hù)進(jìn)程,必須設(shè)置在start函數(shù)之前,否則會(huì)產(chǎn)生異常# 默認(rèn)為False,即主進(jìn)程會(huì)等待子進(jìn)程結(jié)束之后才結(jié)束,# 如果設(shè)置為True,主進(jìn)程結(jié)束之后所有的子進(jìn)程自動(dòng)結(jié)束,不管子進(jìn)程是否已經(jīng)執(zhí)行完所有任務(wù)# p.daemon = True# 啟動(dòng)進(jìn)程p.start()# 獲取進(jìn)程pid,如果在start函數(shù)之前獲取pid,默認(rèn)為None,因?yàn)檫M(jìn)程還沒啟動(dòng)print("進(jìn)程process pid = ",p.pid)# 獲取進(jìn)程名字print("進(jìn)程process name = ",p.name)# 獲取進(jìn)程pidprint("進(jìn)程process exitcode = ",p.exitcode)if __name__ == "__main__":main()''' 輸出結(jié)果:進(jìn)程process pid = 2600 進(jìn)程process name = Process-1 進(jìn)程process exitcode = None 進(jìn)程process pid = 4372 進(jìn)程process name = Process-2 進(jìn)程process exitcode = None 進(jìn)程process pid = 14124 進(jìn)程process name = Process-3 進(jìn)程process exitcode = None 進(jìn)程process pid = 10920 進(jìn)程process name = Process-4 進(jìn)程process exitcode = None 進(jìn)程process pid = 4892 進(jìn)程process name = Process-5 進(jìn)程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 進(jìn)程 Process 小竅門
Python 的 os 模塊封裝了常見的系統(tǒng)調(diào)用,其中就包括:
# !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:猿說編程 @Blog(個(gè)人博客地址): www.codersrc.com @File:Python 進(jìn)程 Process 模塊.py @Time:2021/05/06 07:37 @Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅(jiān)持不懈地積累!"""os.fork() 創(chuàng)建子進(jìn)程 os.getpid() 獲取自身 ID os.getppid() 獲取父進(jìn)程 ID關(guān)于進(jìn)程 Process 創(chuàng)建就介紹到這里,不知道大家發(fā)現(xiàn)沒有,進(jìn)程 Process 的創(chuàng)建和線程 threading 的創(chuàng)建非常相似,那么 Python 進(jìn)程和線程到底又有什么區(qū)別呢?關(guān)于 Python 進(jìn)程和線程的區(qū)別請(qǐng)參考:Python 進(jìn)程 Process 與線程 threading 的區(qū)別
六.猜你喜歡
未經(jīng)允許不得轉(zhuǎn)載:猿說編程 ? Python 進(jìn)程 Process 模塊
總結(jié)
以上是生活随笔為你收集整理的Python 进程 Process 模块 - Python零基础入门教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jq之animate()操作多个属性
- 下一篇: Python any 函数 - Pyth