色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python process模塊的使用簡(jiǎn)介

瀏覽:4日期:2022-06-19 16:48:04
目錄process模塊1、在python中啟動(dòng)一個(gè)子進(jìn)程2、給子進(jìn)程傳遞參數(shù)3、同時(shí)開多個(gè)子進(jìn)程4、join的用法5、多進(jìn)程之間的數(shù)據(jù)是否隔離6、為什么在Windows中Process()必須放到if __name__ == ’__main__’:下process模塊

process模塊是一個(gè)創(chuàng)建進(jìn)程的模塊,借助這個(gè)模塊,就可以完成進(jìn)程的創(chuàng)建。

參數(shù)介紹:

Process(group=None, target=None, name=None, args=(), kwargs={})​1 group——參數(shù)未使用,值始終為None2 target——表示調(diào)用對(duì)象,即子進(jìn)程要執(zhí)行的任務(wù)3 args——表示調(diào)用對(duì)象的位置參數(shù)元組,args=(1,2,’egon’,)4 kwargs——表示調(diào)用對(duì)象的字典,kwargs={’name’:’egon’,’age’:18}5 name——為子進(jìn)程的名稱

方法介紹:

obj.start():?jiǎn)?dòng)進(jìn)程,并調(diào)用該子進(jìn)程中的obj.run()obj.run():進(jìn)程啟動(dòng)時(shí)運(yùn)行的方法,正是它去調(diào)用target指定的函數(shù),我們自定義類的類中一定要實(shí)現(xiàn)該方法obj.terminate():強(qiáng)制終止進(jìn)程obj,不會(huì)進(jìn)行任何清理操作,如果obj創(chuàng)建了子進(jìn)程,該子進(jìn)程就成了僵尸進(jìn)程,使用該方法需要特別小心這種情況。如果obj還保存了一個(gè)鎖那么也將不會(huì)被釋放,進(jìn)而導(dǎo)致死鎖obj.is_alive():如果obj仍然運(yùn)行,返回Trueobj.join([timeout]):主線程等待obj終止(強(qiáng)調(diào):是主線程處于等的狀態(tài),而obj是處于運(yùn)行的狀態(tài))。timeout是可選的超時(shí)時(shí)間,需要強(qiáng)調(diào)的是,obj.join只能join住start開啟的進(jìn)程,而不能join住run開啟的進(jìn)程

屬性介紹:

obj.daemon:默認(rèn)值為False,如果設(shè)為True,代表obj為后臺(tái)運(yùn)行的守護(hù)進(jìn)程,當(dāng)obj的父進(jìn)程終止時(shí),obj也隨之終止,并且設(shè)定為True后,obj不能創(chuàng)建自己的新進(jìn)程,必須在obj.start()之前設(shè)置obj.name:進(jìn)程的名稱obj.pid:進(jìn)程的pidobj.exitcode:進(jìn)程在運(yùn)行時(shí)為None、如果為?N,表示被信號(hào)N結(jié)束(了解即可)obj.authkey:進(jìn)程的身份驗(yàn)證鍵,默認(rèn)是由os.urandom()隨機(jī)生成的32字符的字符串。這個(gè)鍵的用途是為涉及網(wǎng)絡(luò)連接的底層進(jìn)程間通信提供安全性,這類連接只有在具有相同的身份驗(yàn)證鍵時(shí)才能成功(了解即可)1、在python中啟動(dòng)一個(gè)子進(jìn)程

from multiprocessing import Processimport os​def func(): print(’這是一個(gè)子進(jìn)程——>進(jìn)程號(hào):’, os.getpid(), ’ 主進(jìn)程號(hào):’, os.getppid())​​if __name__ == ’__main__’: print(’這是主進(jìn)程——>進(jìn)程號(hào):’, os.getpid(), ’ 主進(jìn)程號(hào)(pycharm):’, os.getppid()) # 實(shí)例化一個(gè)子進(jìn)程對(duì)象 obj = Process(target=func) obj.start() # 執(zhí)行子進(jìn)程對(duì)象 print(’執(zhí)行了完了主進(jìn)程的內(nèi)容’)​# 輸出這是主進(jìn)程——>進(jìn)程號(hào): 3100 主進(jìn)程號(hào)(pycharm): 6748執(zhí)行了完了主進(jìn)程的內(nèi)容這是一個(gè)子進(jìn)程——>進(jìn)程號(hào): 2392 主進(jìn)程號(hào): 31002、給子進(jìn)程傳遞參數(shù)

from multiprocessing import Processimport os​​def func(name, age): print(’這是一個(gè)子進(jìn)程——>進(jìn)程號(hào):’, os.getpid(), ’ 主進(jìn)程號(hào):’, os.getppid()) print(f’這是一個(gè)子進(jìn)程——>我的名字是{name},今年{age}’)​​if __name__ == ’__main__’: print(’這是主進(jìn)程——>進(jìn)程號(hào):’, os.getpid(), ’ 主進(jìn)程號(hào)(pycharm):’, os.getppid()) # 實(shí)例化一個(gè)子進(jìn)程對(duì)象 obj = Process(target=func, args=(’小楊’, ’18’)) # args以元組的形式給子進(jìn)程func函數(shù)傳位置參數(shù) # kwargs以字典的形式給子進(jìn)程func函數(shù)傳關(guān)鍵字參數(shù) # kwargs={’name’: ’小楊’, ’age’: 18} obj.start() # 執(zhí)行子進(jìn)程對(duì)象 print(’執(zhí)行了完了主進(jìn)程的內(nèi)容’) # 輸出這是主進(jìn)程——>進(jìn)程號(hào): 11936 主進(jìn)程號(hào)(pycharm): 3676執(zhí)行了完了主進(jìn)程的內(nèi)容這是一個(gè)子進(jìn)程——>進(jìn)程號(hào): 2996 主進(jìn)程號(hào): 11936這是一個(gè)子進(jìn)程——>我的名字是小楊,今年183、同時(shí)開多個(gè)子進(jìn)程

from multiprocessing import Processimport os​​def func(name, age): print(f’這是一個(gè)子進(jìn)程——>進(jìn)程號(hào):{os.getpid()},主進(jìn)程號(hào):{os.getppid()},我的名字是{name},今年{age}’)​​if __name__ == ’__main__’: print(’這是主進(jìn)程——>進(jìn)程號(hào):’, os.getpid(), ’ 主進(jìn)程號(hào)(pycharm):’, os.getppid()) count = [(’小楊’, 18), (’鮑勃’, 20), (’艾倫’, 55)] for lis in count:# 實(shí)例化一個(gè)子進(jìn)程對(duì)象obj = Process(target=func, args=lis) # args以元組的形式給子進(jìn)程func函數(shù)傳位置參數(shù)obj.start() # 執(zhí)行子進(jìn)程對(duì)象 print(’執(zhí)行了完了主進(jìn)程的內(nèi)容’) # 輸出這是主進(jìn)程——>進(jìn)程號(hào): 12632 主進(jìn)程號(hào)(pycharm): 9220執(zhí)行了完了主進(jìn)程的內(nèi)容這是一個(gè)子進(jìn)程——>進(jìn)程號(hào):10048,主進(jìn)程號(hào):12632,我的名字是小楊,今年18這是一個(gè)子進(jìn)程——>進(jìn)程號(hào):16032,主進(jìn)程號(hào):12632,我的名字是鮑勃,今年20這是一個(gè)子進(jìn)程——>進(jìn)程號(hào):12060,主進(jìn)程號(hào):12632,我的名字是艾倫,今年554、join的用法

obj.join([timeout]): 主進(jìn)程等待子進(jìn)程obj終止(強(qiáng)調(diào):是主進(jìn)程處于等的狀態(tài),而子進(jìn)程obj是處于運(yùn)行的狀態(tài))。timeout是可選的超時(shí)時(shí)間,需要強(qiáng)調(diào)的是,obj.join只能join住start開啟的進(jìn)程,而不能join住run開啟的進(jìn)程

多個(gè)進(jìn)程同時(shí)運(yùn)行(注意,子進(jìn)程的執(zhí)行順序不是根據(jù)啟動(dòng)順序決定的)

join——>屬于同步阻塞:

同步:在做A事件的時(shí)候發(fā)起B(yǎng)事件,必須等待B事件結(jié)束后才能繼續(xù)做A事件

阻塞:CPU不工作——>input accept recv recvfrom sleep connect......

start——>屬于異步非阻塞:

異步:在做A事件的時(shí)候發(fā)起B(yǎng)事件,不用等待B事件結(jié)束就可以繼續(xù)A事件

非阻塞:CPU在工作(非輸入輸出階段I/O)

from multiprocessing import Processimport randomimport time​​def mail(name, age): count = random.random() print(f’給{age}歲的{name}發(fā)了一封郵件!延遲{count}秒’) time.sleep(count) # 模擬網(wǎng)絡(luò)延遲 ''' 多個(gè)進(jìn)程同時(shí)運(yùn)行(注意,子進(jìn)程的執(zhí)行順序不是根據(jù)啟動(dòng)順序決定的) '''​​if __name__ == ’__main__’: info_list = [(’小楊’, 18), (’鮑勃’, 20), (’艾倫’, 55)] jo = [] for info in info_list:obj = Process(target=mail, args=info)obj.start()jo.append(obj)​ # 將所有的子進(jìn)程全部放入jo列表,在循環(huán)join所有子進(jìn)程,就能等待所有子進(jìn)程結(jié)束后在做操作 for o in jo:o.join()​ # 所有的子進(jìn)程結(jié)束的操作 print(’全部發(fā)送完畢’) # 輸出給20歲的鮑勃發(fā)了一封郵件!延遲0.19840279388911186秒給18歲的小楊發(fā)了一封郵件!延遲0.8891892863366903秒給55歲的艾倫發(fā)了一封郵件!延遲0.0434307277609951秒全部發(fā)送完畢5、多進(jìn)程之間的數(shù)據(jù)是否隔離

from multiprocessing import Process​count = 1​def func(): global count count += 1​if __name__ == ’__main__’: for i in range(10):obj = Process(target=func)obj.start() print(count)# ————>1 主進(jìn)程的count沒有被改變說明進(jìn)程之間的數(shù)據(jù)時(shí)隔離的 # 輸出16、為什么在Windows中Process()必須放到if __name__ == ’__main__’:下

由于Windows沒有fork,多處理模塊啟動(dòng)一個(gè)新的Python進(jìn)程并導(dǎo)入調(diào)用模塊。

如果在導(dǎo)入時(shí)調(diào)用Process(),那么這將啟動(dòng)無限繼承的新進(jìn)程(或直到機(jī)器耗盡資源)。

這是隱藏對(duì)Process()內(nèi)部調(diào)用的原,使用if __name__ == ’__main__’:,這個(gè)if語句中的語句將不會(huì)在導(dǎo)入時(shí)被調(diào)用。

以上就是python process模塊的使用簡(jiǎn)介的詳細(xì)內(nèi)容,更多關(guān)于python process模塊的使用的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 亚洲午夜18| 亚洲一区二区三区精品国产 | a级毛片免费完整视频 | 成人在线免费观看视频 | 国产欧美综合精品一区二区 | 久草在线青青草 | 国产精品va一级二级三级 | 国产伦精品一区二区三区免费 | 成年女人免费观看视频 | 成人69 | 国产亚洲精品一区二区久久 | 国产禁女女网站免费看 | 成年人午夜网站 | 精品欧美成人bd高清在线观看 | 国产东北色老头老太性视频 | 精品国产日韩亚洲一区在线 | 国产亚洲精品一区二区三区 | 波多野一区二区三区在线 | 手机福利片 | 天天看夜夜看 | 一级做a爱 | 亚洲日本aⅴ片在线观看香蕉 | 久久久网久久久久合久久久久 | 午夜视频在线观看一区二区 | 男人的天堂精品国产一区 | 亚洲综合久久久 | 中文成人在线视频 | 成年人在线网站 | 国产精品久久一区二区三区 | 一本色道久久88亚洲综合 | 国产蜜汁tv福利在线 | 男人天堂网在线观看 | 国产精品福利视频萌白酱 | 久久午夜鲁丝片午夜精品 | 午夜丝袜美腿福利视频在线看 | 国产欧美日韩在线人成aaaa | 国产日产欧产精品精品推荐小说 | 在线播放精品一区二区啪视频 | 黄色片三级网站 | 黄 色 成 年人网站 黄 色 免费网 站 成 人 | 99久久精品国产免看国产一区 |