Python基礎之如何使用multiprocessing模塊

一、multiprocessing模塊

multiprocessing包是Python中的多進程管理包。與threading.Thread類似,它可以使用multiprocessing.Proces 對象來創建一個進程。

該進程可以運行在Python程序內部編寫的函數。該Process對象與Thread對象的用法相同,也start(),run()的方法。

此外multiprocessing包中也有Lock/Event/Semaphore/Condition類(這些對象可以像多線程那樣,通過參數傳遞給各個進程),用以同步進程,其用法與threading包中的同名類一致。

所以,multiprocessing的很大一部份與threading使用同一套API,隻不過換到瞭多進程的情境。接下來我們通過一個案例學習:

import time
import multiprocessing
 
def download () :
    print("開始下載文件...")
    time.sleep(1)
    print("完成下載文件...")
 
def upload() :
    print("開始上傳文件...")
    time.sleep(1)
    print("完成上傳文件...")
 
#download()
# upload()
#多進程與多線程的使用方式是差不多的
download_process = multiprocessing.Process(target=download)
upload_process = multiprocessing. Process(target=upload)
if _name_ == '_main_':
    #多進程必須要在 if _name_ == "_main_”裡面
    download_process.start()
    upload_process.start ()
    #默認情況下,主進程代碼運行完畢之後會等待子進程結束
    print('--主進程運行完瞭---')

上述代碼是一個非常簡單的程序,一旦運行這個程序,按照代碼的執行順序,download 函數執行完畢後才能執行upload 函數﹒如果可以讓download和upload同時運行,顯然執行這個程序的效率會大大提升。

要點:

  • 進程(Process)是資源分配的最小單位
  • 多進程是Python程序中實現多任務的一種方式,使用多進程可以大大提高程序的執行效率

二、進程的創建

  • 導入進程包

import multiprocessing

  • 通過進程類創建進程對象

進程對象= multiprocessing.Process()

  • 啟動進程執行任務

進程對象.start()

通過進程類創建進程對象

進程對象=multiprocessing.Process(target=任務名)

三、進程的參數傳遞

帶有參數的任務

進程執行帶有參數的任務傳參有兩種方式:

  • 元組方式傳參∶元組方式傳參一定要和參數的順序保持一致。
  • 字典方式傳參:字典方式傳參字典中的key一定要和參數名保持一致。

到此這篇關於Python基礎之如何使用multiprocessing模塊的文章就介紹到這瞭,更多相關multiprocessing模塊的使用內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: