Python基礎(chǔ)之如何使用multiprocessing模塊
一、multiprocessing模塊
multiprocessing包是Python中的多進(jìn)程管理包。與threading.Thread類似,它可以使用multiprocessing.Proces 對(duì)象來創(chuàng)建一個(gè)進(jìn)程。
該進(jìn)程可以運(yùn)行在Python程序內(nèi)部編寫的函數(shù)。該P(yáng)rocess對(duì)象與Thread對(duì)象的用法相同,也start(),run()的方法。
此外multiprocessing包中也有Lock/Event/Semaphore/Condition類(這些對(duì)象可以像多線程那樣,通過參數(shù)傳遞給各個(gè)進(jìn)程),用以同步進(jìn)程,其用法與threading包中的同名類一致。
所以,multiprocessing的很大一部份與threading使用同一套API,只不過換到了多進(jìn)程的情境。接下來我們通過一個(gè)案例學(xué)習(xí):
import time
import multiprocessing
def download () :
print("開始下載文件...")
time.sleep(1)
print("完成下載文件...")
def upload() :
print("開始上傳文件...")
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è)非常簡單的程序,一旦運(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
- 通過進(jìn)程類創(chuàng)建進(jìn)程對(duì)象
進(jìn)程對(duì)象= multiprocessing.Process()
- 啟動(dòng)進(jìn)程執(zhí)行任務(wù)
進(jìn)程對(duì)象.start()
通過進(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)程庫multiprocessing中進(jìn)程池Pool類的使用詳解
相關(guān)文章
spring?boot集成jasypt?并實(shí)現(xiàn)自定義加解密的詳細(xì)步驟
由于項(xiàng)目中的配置文件?配置的地方過多,現(xiàn)將配置文件統(tǒng)一放到nacos上集中管理?且密碼使用加密的方式放在配置文件中,配置文件的加密使用加密庫jasypt,本文給大家介紹spring boot集成jasypt并實(shí)現(xiàn)自定義加解密,感興趣的朋友一起看看吧2023-08-08
java集合類arraylist循環(huán)中刪除特定元素的方法
下面小編就為大家?guī)硪黄狫ava集合類ArrayList循環(huán)中刪除特定元素的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-11-11
JAVA設(shè)計(jì)模式之建造者模式原理與用法詳解
這篇文章主要介紹了JAVA設(shè)計(jì)模式之建造者模式,簡單說明了建造者模式的原理、組成,并結(jié)合實(shí)例形式分析了java建造者模式的定義與用法,需要的朋友可以參考下2017-08-08
一篇超詳細(xì)的Spring Boot對(duì)jdbc支持的文章
JdbcTemplate 是在JDBC API基礎(chǔ)上提供了更抽象的封裝,并提供了基于方法注解的事務(wù)管理能力。 通過使用SpringBoot自動(dòng)配置功能并代替我們自動(dòng)配置beans,下面給大家介紹spring boot中使用JdbcTemplate相關(guān)知識(shí),一起看看吧2021-07-07

