日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

python多进程_Python多进程实践

發布時間:2023/11/27 生活经验 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python多进程_Python多进程实践 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文重點探究以下幾個內容:

  • 創建進程Process
  • 進程間數據傳遞Queue/Pipe/Value/Array/Manager
  • 進程池Pool

創建進程Process

創建進程方式如下:

  • 可以看出,Process的用法與Thread類似,守護進程設置方式為deamon屬性。由于join為0.5且為守護進程,因此不等守護進程運行結束主程序已退出。若增加另一非守護進程,則必須等非守護進程結束,守護進程才能退出
  • 同樣,可以通過繼承Process實現進程

進程間數據傳遞Queue/Pipe/Value/Array/Manager

可以通過Lock鎖機制實現共享鎖,但比較常用的方式還是以上這些方式,效率更高,更安全。

Queue

使用方式

構造

  • multiprocessing.Queue([maxsize])
    限制隊列長度

類方法

  • qsize()
    返回隊列的大致大小,因為多進程或者多線程一直在消耗隊列,因此該數據不一定正確
  • empty()
    判斷隊列是否為空,如果是,則返回True,否則False
  • full()
    判斷隊列是否已滿,如果是,則返回True,否則False
  • put(obj[, block[, timeout]])
    將對象放入隊列,可選參數block為True,timeout為None
  • get()
    從隊列取出對象

Pipe

使用方式

構造

  • conn1, conn2 = multiprocessing.Pipe([duplex])
    若duplex為True(默認),則是雙向的,False則是單向的。 conn1只能接受,conn2只能發送。

Value和Array

Manager

更多類型支持一般使用Manager,支持的類型包括list, dict, Namespace, Lock, RLock, Semaphore, BoundedSemaphore, Condition, Event, Barrier, Queue, Value and Array,使用方式如下:

進程池

一般使用方式如下:

構造函數
multiprocessing.pool.Pool([processes[, initializer[, initargs[, maxtasksperchild[, context]]]]])

  • 若processes沒有傳,則默認為 os.cpu_count()

類方法

  • apply(func[, args[, kwds]])
    在返回結果前,將一直阻塞進程,注意:func只在一個進程中運行
  • apply_async(func[, args[, kwds[, callback[, error_callback]]]])
    在需要并行的場景中,一般用此方法更好。當result準備好時就調用callback,失敗則調用error_callback,注意:自定義回調函數只接受一個參數且時非阻塞的
  • map(func, iterable[, chunksize])
    為map()函數的并行版。將可迭代對象拆成小塊,放到不同進程中運行。對于內存占用大的可迭代對象,一般使用imap或imap_unordered
  • map_async(func, iterable[, chunksize[, callback[, error_callback]]])
    非阻塞版。
  • imap(func, iterable[, chunksize])
    注意:若iterable很長時,chunksize(默認為1)設一個大的值速度更快。
  • imap_unordered(func, iterable[, chunksize])
    無序(若進程個數為1,則順序一致)

以上部分代碼來自官方文檔:https://docs.python.org/3/library/multiprocessing.html

總結

以上是生活随笔為你收集整理的python多进程_Python多进程实践的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。