Python基礎(chǔ)之如何使用multiprocessing模塊
一、multiprocessing模塊
multiprocessing包是Python中的多進(jìn)程管理包。與threading.Thread類似,它可以使用multiprocessing.Proces 對(duì)象來(lái)創(chuàng)建一個(gè)進(jìn)程。
該進(jìn)程可以運(yùn)行在Python程序內(nèi)部編寫(xiě)的函數(shù)。該P(yáng)rocess對(duì)象與Thread對(duì)象的用法相同,也start(),run()的方法。
此外multiprocessing包中也有Lock/Event/Semaphore/Condition類(這些對(duì)象可以像多線程那樣,通過(guò)參數(shù)傳遞給各個(gè)進(jìn)程),用以同步進(jìn)程,其用法與threading包中的同名類一致。
所以,multiprocessing的很大一部份與threading使用同一套API,只不過(guò)換到了多進(jìn)程的情境。接下來(lái)我們通過(guò)一個(gè)案例學(xué)習(xí):
import time import multiprocessing def download () : print("開(kāi)始下載文件...") time.sleep(1) print("完成下載文件...") def upload() : print("開(kāi)始上傳文件...") time.sleep(1) print("完成上傳文件...") #download() # upload() #多進(jìn)程與多線程的使用方式是差不多的 download_process = multiprocessing.Process(target=download) upload_process = multiprocessing. Process(target=upload) if _name_ == '_main_': #多進(jìn)程必須要在 if _name_ == "_main_”里面 download_process.start() upload_process.start () #默認(rèn)情況下,主進(jìn)程代碼運(yùn)行完畢之后會(huì)等待子進(jìn)程結(jié)束 print('--主進(jìn)程運(yùn)行完了---')
上述代碼是一個(gè)非常簡(jiǎn)單的程序,一旦運(yùn)行這個(gè)程序,按照代碼的執(zhí)行順序,download 函數(shù)執(zhí)行完畢后才能執(zhí)行upload 函數(shù)﹒如果可以讓download和upload同時(shí)運(yùn)行,顯然執(zhí)行這個(gè)程序的效率會(huì)大大提升。
要點(diǎn):
- 進(jìn)程(Process)是資源分配的最小單位
- 多進(jìn)程是Python程序中實(shí)現(xiàn)多任務(wù)的一種方式,使用多進(jìn)程可以大大提高程序的執(zhí)行效率
二、進(jìn)程的創(chuàng)建
- 導(dǎo)入進(jìn)程包
import multiprocessing
- 通過(guò)進(jìn)程類創(chuàng)建進(jìn)程對(duì)象
進(jìn)程對(duì)象= multiprocessing.Process()
- 啟動(dòng)進(jìn)程執(zhí)行任務(wù)
進(jìn)程對(duì)象.start()
通過(guò)進(jìn)程類創(chuàng)建進(jìn)程對(duì)象
進(jìn)程對(duì)象=multiprocessing.Process(target=任務(wù)名)
三、進(jìn)程的參數(shù)傳遞
帶有參數(shù)的任務(wù)
進(jìn)程執(zhí)行帶有參數(shù)的任務(wù)傳參有兩種方式:
- 元組方式傳參∶元組方式傳參一定要和參數(shù)的順序保持一致。
- 字典方式傳參:字典方式傳參字典中的key一定要和參數(shù)名保持一致。
到此這篇關(guān)于Python基礎(chǔ)之如何使用multiprocessing模塊的文章就介紹到這了,更多相關(guān)multiprocessing模塊的使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python多進(jìn)程multiprocessing、進(jìn)程池用法實(shí)例分析
- Python進(jìn)程Multiprocessing模塊原理解析
- 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用法示例
- Python多線程threading和multiprocessing模塊實(shí)例解析
- Python多進(jìn)程庫(kù)multiprocessing中進(jìn)程池Pool類的使用詳解
相關(guān)文章
一文帶你了解Spring的Bean初始化過(guò)程和生命周期
Spring的核心功能有三點(diǎn)IOC、DI、AOP,IOC則是基礎(chǔ),也是Spring功能的最核心的點(diǎn)之一。今天一起來(lái)總結(jié)下Spring中Bean是怎么被創(chuàng)建出來(lái)的2023-03-03SpringBoot下載文件遇到文件損壞等問(wèn)題解決方案
調(diào)用接口下載spring?boot工程的resources目錄下的excel模板文件,非常常見(jiàn)的一個(gè)文件下載功能,但是卻容易遇到很多坑,下面總結(jié)記錄下2023-10-10Java實(shí)現(xiàn)微信支付的項(xiàng)目實(shí)踐
最近的一個(gè)項(xiàng)目中涉及到了支付業(yè)務(wù),其中用到了微信支付和支付寶支付,本文就來(lái)介紹一下Java實(shí)現(xiàn)微信支付的項(xiàng)目實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10Java如何判斷一個(gè)空對(duì)象的常見(jiàn)方法
在Java中判斷對(duì)象是否為空是一項(xiàng)重要的編程技巧,可以有效防止空指針異常的發(fā)生,下面這篇文章主要給大家介紹了關(guān)于利用Java如何判斷一個(gè)空對(duì)象的相關(guān)資料,需要的朋友可以參考下2024-01-01Mybatis錯(cuò)誤引起的程序啟動(dòng)卡死問(wèn)題及解決
這篇文章主要介紹了Mybatis錯(cuò)誤引起的程序啟動(dòng)卡死問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02Springboot項(xiàng)目javax.validation使用方法詳解
這篇文章主要介紹了Springboot項(xiàng)目javax.validation使用方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04Mybatis結(jié)果生成鍵值對(duì)的實(shí)例代碼
這篇文章主要介紹了Mybatis結(jié)果生成鍵值對(duì)的實(shí)例代碼,以及MyBatis返回Map鍵值對(duì)數(shù)據(jù)的實(shí)現(xiàn)方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下2017-02-02帶你走進(jìn)Maven的大門-最全Maven配置及集成idea工具總結(jié)
Maven項(xiàng)目對(duì)象模型(POM),是一個(gè)項(xiàng)目管理工具可以通過(guò)一小段描述信息來(lái)管理項(xiàng)目的構(gòu)建,報(bào)告和文檔的軟件.那我們想要在IDEA中使用Maven得進(jìn)行一些配置,接下來(lái)我們具體看一下是如何配置使用的,需要的朋友可以參考下2021-06-06