python 程序池2 Pool相關函式

2022-03-28 15:13:11 字數 1283 閱讀 7662

python自2.6開始提供了多程序模組multiprocessing,程序池使用multiprocessing.pool,pool的構造如下:

multiprocessing.pool([processes[, initializer[, initargs[, maxtasksperchild]]]])

processes表示pool中程序的數目,預設地為當前cpu的核數。

initializer表示新程序的初始化函式。

initargs表示新程序的初始化函式的引數。

maxtasksperchild表示每個程序執行task的最大數目(該引數解釋見python 程序池1 - pool使用簡介)。

主程序的執行流程同單程序一致。

3、map(func, iterable[, chunksize])

map方法與在功能上等價與內建的map(),只不過單個任務會並行執行。它會使程序阻塞直到結果返回。

但需注意的是其第二個引數雖然描述的為iterable, 但在實際使用中發現只有在整個佇列全部就緒後,程式才會執行子程序。 

4、map_async(func, iterable[, chunksize[, callback]])

5、imap(func, iterable[, chunksize])

與map不同的是, imap的返回結果為iter,需要在主程序中主動使用next來驅動子程序的呼叫。即使子程序沒有返回結果,主程序對於gen_list(l)的 iter還是會繼續進行, 另外根據python2.6文件的描述,對於大資料量的iterable而言,將chunksize設定大一些比預設的1要好。

for x in pool.imap(pool_test, gen_list(l)):

pass

6、imap_unordered(func, iterable[, chunksize])

同imap一致,只不過其並不保證返回結果與迭代傳入的順序一致。

7、close()

關閉pool,使其不再接受新的任務。

8、terminate()

結束工作程序,不再處理未處理的任務。

9、join()

主程序阻塞等待子程序的退出, join方法要在close或terminate之後使用。

參考:

Python多程序 程序池pool

from multiprocessing import process,pool import time defselect time.sleep 1 print time.ctime return 這是每個進行執行完後返回的值,該值會會被 callback函式接收 def foo args pri...

python 程序池Pool詳情

當需要建立的子程序數量不多時,可以直接利用multiprocessing中的process動態成生多個程序,但如果是上百甚至上千個目標,手動的去建立程序的工作量巨大,此時就可以用到multiprocessing模組提供的pool方法。初始化pool時,可以指定乙個最大程序數,當有新的請求提交到poo...

Python多程序4 程序池 Pool

學習 分類目錄 多程序 是multiprocessing模組下的乙個類,是一種建立多程序的更加簡便的方式,可以更加方便的分配任務與傳遞引數。pool mp.pool processes 6 生成程序池 pool的兩個任務分配的函式 map 函式名,引數列表的列表 所謂的引數列表的列表是把所有的任務的...