国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

python process模塊的使用簡介

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

process模塊是一個創建進程的模塊,借助這個模塊,就可以完成進程的創建。

參數介紹:

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

方法介紹:

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

屬性介紹:

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

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

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

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

obj.join([timeout]): 主進程等待子進程obj終止(強調:是主進程處于等的狀態,而子進程obj是處于運行的狀態)。timeout是可選的超時時間,需要強調的是,obj.join只能join住start開啟的進程,而不能join住run開啟的進程

多個進程同時運行(注意,子進程的執行順序不是根據啟動順序決定的)

join——>屬于同步阻塞:

同步:在做A事件的時候發起B事件,必須等待B事件結束后才能繼續做A事件

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

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

異步:在做A事件的時候發起B事件,不用等待B事件結束就可以繼續A事件

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

from multiprocessing import Processimport randomimport time​​def mail(name, age): count = random.random() print(f’給{age}歲的{name}發了一封郵件!延遲{count}秒’) time.sleep(count) # 模擬網絡延遲 ''' 多個進程同時運行(注意,子進程的執行順序不是根據啟動順序決定的) '''​​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)​ # 將所有的子進程全部放入jo列表,在循環join所有子進程,就能等待所有子進程結束后在做操作 for o in jo:o.join()​ # 所有的子進程結束的操作 print(’全部發送完畢’) # 輸出給20歲的鮑勃發了一封郵件!延遲0.19840279388911186秒給18歲的小楊發了一封郵件!延遲0.8891892863366903秒給55歲的艾倫發了一封郵件!延遲0.0434307277609951秒全部發送完畢5、多進程之間的數據是否隔離

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 主進程的count沒有被改變說明進程之間的數據時隔離的 # 輸出16、為什么在Windows中Process()必須放到if __name__ == ’__main__’:下

由于Windows沒有fork,多處理模塊啟動一個新的Python進程并導入調用模塊。

如果在導入時調用Process(),那么這將啟動無限繼承的新進程(或直到機器耗盡資源)。

這是隱藏對Process()內部調用的原,使用if __name__ == ’__main__’:,這個if語句中的語句將不會在導入時被調用。

以上就是python process模塊的使用簡介的詳細內容,更多關于python process模塊的使用的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 中日韩一区二区三区 | 久久精品免费观看国产软件 | 国产三级视频在线播放 | 国产99视频精品免费视频免里 | 国产精品videossex另类 | 舔操 | 国内自拍第1页 | 国产精品黄页网站在线播放免费 | 国产精品亚洲四区在线观看 | 国产亚洲高清在线精品不卡 | 欧美一级在线播放 | 国产精品1区2区3区 国产精品1区2区3区在线播放 | 日韩精品一区二区三区中文字幕 | 免费播放巨茎人妖不卡片 | 国产精品资源手机在线播放 | 国产伦久视频免费观看 视频 | 免费观看毛片视频 | 久久精品视频在线播放 | 美女张开腿让我 | 亚洲视频免费在线看 | 久久精品午夜视频 | 手机毛片 | 成人免费午间影院在线观看 | 亚洲一区区 | 综合精品| 久久久久免费视频 | 国产成人久久精品区一区二区 | 国产日韩高清一区二区三区 | 三级毛片在线 | 波多野结衣视频在线观看地址免费 | 韩国一级毛片 | 成人亚洲视频在线观看 | 久久免费视频在线 | 国产成人精品综合在线 | 久久精品国产亚洲a | 欧美69视频在线 | 日本欧美国产精品 | 男女免费观看视频 | 亚洲精品区| 男女性关系视频免费观看软件 | 亚洲rct中文字幕在线 |