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

