摘至本人有道雲筆記《Python進程》
1.主要設計模塊
import os :進程的數據
getpid()獲取當前進程id getppid()獲取父進程id
from multiprocessing improt Process : 創建進程
multiprocessing模塊提供了一個Process類來代表一個進程對象
使用Process創建進程時,傳入兩個參數,target參數指定子進程要做的事情(函數),args參數,傳入元組。
join()方法可以等待子進程結束後再繼續往下運行,通常用於進程間的同步。
start()方法啓動線程
from multiprocessing improt Pool : 進程池
詳解:Pool()方法指定了可以同時創建進程的個數,如不指定參數,則是cup核心數。Pool(3),指定最多可同時創建3個進程(並行),for循環內則指定了要創建101個進程。
p.apply_async(long_time_task, args=(i,)) 異步
運行流程:1.首先指定進程池的容量
2.異步創建3個進程,然後p.close()關閉進程池,p.join(),等待3個子進程結束。
循環執行 2。直至101個進程創建完畢。
2.進程間通信
Process之間肯定是需要通信的,操作系統提供了很多機制來實現進程間的通信。Python的multiprocessing模塊包裝了底層的機制,提供了Queue、Pipes等多種方式來交換數據。
以Queue爲例,在父進程中創建兩個子進程,一個往Queue裏寫數據,一個從Queue裏讀數據:
Queue類實現了一個基本的先進先出(FIFO)容器,使用put()將元素添加到序列尾端,get()從隊列尾部移除元素。