python multiprocessing模塊用法及原理介紹
一 multiprocessing模塊介紹
python中的多線程無法利用多核優(yōu)勢,如果想要充分地使用多核CPU的資源(os.cpu\_count\(\)查看),在python中大部分情況需要使用多進(jìn)程。
Python提供了multiprocessing。 multiprocessing模塊用來開啟子進(jìn)程,并在子進(jìn)程中執(zhí)行我們定制的任務(wù)(比如函數(shù)),該模塊與多線程模塊threading的編程接口類似。
multiprocessing模塊的功能眾多:支持子進(jìn)程、通信和共享數(shù)據(jù)、執(zhí)行不同形式的同步,>提供了Process、Queue、Pipe、Lock等組件。
需要再次強(qiáng)調(diào)的一點是:與線程不同,進(jìn)程沒有任何共享狀態(tài),進(jìn)程修改的數(shù)據(jù),改動僅限于該進(jìn)程內(nèi)。
二 Process類的介紹
創(chuàng)建進(jìn)程的類:
Process([group [, target [, name [, args [, kwargs]]]]]),由該類實例化得到的對象,可用來開啟一個子進(jìn)程
強(qiáng)調(diào):
1. 需要使用關(guān)鍵字的方式來指定參數(shù)
2. args指定的為傳給target函數(shù)的位置參數(shù),是一個元組形式,必須有逗號
參數(shù)介紹:
group參數(shù)未使用,值始終為None
target表示調(diào)用對象,即子進(jìn)程要執(zhí)行的任務(wù)
args表示調(diào)用對象的位置參數(shù)元組,args=(1,2,'mike',)
kwargs表示調(diào)用對象的字典,kwargs={'name':'mike','age':18}
name為子進(jìn)程的名稱
方法介紹:
p.start() :# 啟動進(jìn)程,并調(diào)用該子進(jìn)程中的p.run()
p.run() :# 進(jìn)程啟動時運行的方法,正是它去調(diào)用target指定的函數(shù),我們自定義類的類中一定要實現(xiàn)該方法
p.terminate() : # 強(qiáng)制終止進(jìn)程p,不會進(jìn)行任何清理操作,如果p創(chuàng)建了子進(jìn)程,該子進(jìn)程就成了僵尸進(jìn)程,使用該方法需要特別小心這種情況。如果p還保存了一個鎖那么也將不會被釋放,進(jìn)而導(dǎo)致死鎖
p.is_alive() :# 如果p仍然運行,返回True
p.join([timeout]) :# 主進(jìn)程等待p終止(強(qiáng)調(diào):是主進(jìn)程處于等的狀態(tài),而p是處于運行的狀態(tài))。timeout是可選的超時時間。
屬性介紹
p.daemon:默認(rèn)值為False,如果設(shè)為True,代表p為后臺運行的守護(hù)進(jìn)程,當(dāng)p的父進(jìn)程終止時,p也隨之終止,并且設(shè)定為True后,p不能創(chuàng)建自己的新進(jìn)程,必須在p.start()之前設(shè)置
p.name:進(jìn)程的名稱
p.pid:進(jìn)程的pid
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Python標(biāo)準(zhǔn)庫之多進(jìn)程(multiprocessing包)介紹
- python multiprocessing 多進(jìn)程并行計算的操作
- 解決windows下python3使用multiprocessing.Pool出現(xiàn)的問題
- Python多進(jìn)程multiprocessing、進(jìn)程池用法實例分析
- Python多進(jìn)程編程multiprocessing代碼實例
- Python進(jìn)程Multiprocessing模塊原理解析
- python multiprocessing多進(jìn)程變量共享與加鎖的實現(xiàn)
- Python進(jìn)程間通信 multiProcessing Queue隊列實現(xiàn)詳解
- Python Multiprocessing多進(jìn)程 使用tqdm顯示進(jìn)度條的實現(xiàn)
- python threading和multiprocessing模塊基本用法實例分析
- Python multiprocessing多進(jìn)程原理與應(yīng)用示例
- Python多進(jìn)程池 multiprocessing Pool用法示例
- Python3多進(jìn)程 multiprocessing 模塊實例詳解
- Python多進(jìn)程multiprocessing.Pool類詳解
- Python多線程threading和multiprocessing模塊實例解析
- Python多進(jìn)程庫multiprocessing中進(jìn)程池Pool類的使用詳解
- Python利用multiprocessing實現(xiàn)最簡單的分布式作業(yè)調(diào)度系統(tǒng)實例
- 簡單學(xué)習(xí)Python多進(jìn)程Multiprocessing
- 像線程一樣管理進(jìn)程的Python multiprocessing庫
相關(guān)文章
利用Python pandas對Excel進(jìn)行合并的方法示例
這篇文章主要給大家介紹了關(guān)于利用Python pandas對Excel進(jìn)行合并的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
python configparser中默認(rèn)值的設(shè)定方式
這篇文章主要介紹了python configparser中默認(rèn)值的設(shè)定方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02
pyspark.sql.DataFrame與pandas.DataFrame之間的相互轉(zhuǎn)換實例
今天小編就為大家分享一篇pyspark.sql.DataFrame與pandas.DataFrame之間的相互轉(zhuǎn)換實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08
python3實現(xiàn)短網(wǎng)址和數(shù)字相互轉(zhuǎn)換的方法
這篇文章主要介紹了python3實現(xiàn)短網(wǎng)址和數(shù)字相互轉(zhuǎn)換的方法,涉及Python操作字符串的相關(guān)技巧,非常具有實用價值,需要的朋友可以參考下2015-04-04
http通過StreamingHttpResponse完成連續(xù)的數(shù)據(jù)傳輸長鏈接方式
這篇文章主要介紹了http通過StreamingHttpResponse完成連續(xù)的數(shù)據(jù)傳輸長鏈接方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02
Python網(wǎng)絡(luò)爬蟲中的同步與異步示例詳解
這篇文章主要給大家介紹了關(guān)于Python網(wǎng)絡(luò)爬蟲中同步與異步的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-02-02

