主頁 > 知識(shí)庫 > python Pool常用函數(shù)用法總結(jié)

python Pool常用函數(shù)用法總結(jié)

熱門標(biāo)簽:房產(chǎn)電銷外呼系統(tǒng) 地圖制圖標(biāo)注位置改變是移位嗎 315電話機(jī)器人廣告 上海機(jī)器人外呼系統(tǒng)哪家好 浙江電銷卡外呼系統(tǒng)好用嗎 地圖標(biāo)注的意義點(diǎn) 蓋州市地圖標(biāo)注 南京銷售外呼系統(tǒng)軟件 地圖標(biāo)注微信發(fā)送位置不顯示

1、說明

apply_async(func[,args[,kwds]):使用非堵塞調(diào)用func(并行執(zhí)行,堵塞方式必須等待上一個(gè)過程退出才能執(zhí)行下一個(gè)過程),args是傳輸給func的參數(shù)列表,kwds是傳輸給func的關(guān)鍵詞參數(shù)列表。

close():關(guān)閉Pool,使之不再接受新任務(wù)。

terminate():無論任務(wù)是否完成,都要立即終止。

join():主進(jìn)程堵塞,等待子進(jìn)程退出,必須在close或terminate之后使用。

2、實(shí)例

#coding: utf-8
import multiprocessing
import time
 
 
def func(msg):
    print("msg:", msg)
    time.sleep(3)
    print("end")
 
 
if __name__ == "__main__":
    cores = multiprocessing.cpu_count()
    pool = multiprocessing.Pool(processes=cores)
    print("Adding tasks...")
    for i in range(cores):
        msg = "hello %d" %(i)
        pool.apply_async(func, (msg, ))   #維持執(zhí)行的進(jìn)程總數(shù)為processes,當(dāng)一個(gè)進(jìn)程執(zhí)行完畢后會(huì)添加新的進(jìn)程進(jìn)去
    print("Starting tasks...")
    pool.close()
    pool.join()   #調(diào)用join之前,先調(diào)用close函數(shù),否則會(huì)出錯(cuò)。執(zhí)行完close后不會(huì)有新的進(jìn)程加入到pool,join函數(shù)等待所有子進(jìn)程結(jié)束
    print("Sub-process(es) done.")

實(shí)例擴(kuò)展:

# -*- coding:utf-8 -*-
from multiprocessing import Pool
import os, time, random
def worker(msg):
  t_start = time.time()
  print("%s開始執(zhí)行,進(jìn)程號(hào)為%d" % (msg,os.getpid()))
  # random.random()隨機(jī)生成0~1之間的浮點(diǎn)數(shù)
  time.sleep(random.random()*2) 
  t_stop = time.time()
  print(msg,"執(zhí)行完畢,耗時(shí)%0.2f" % (t_stop-t_start))
po = Pool(3) # 定義一個(gè)進(jìn)程池,最大進(jìn)程數(shù)3
for i in range(0,10):
  # Pool().apply_async(要調(diào)用的目標(biāo),(傳遞給目標(biāo)的參數(shù)元祖,))
  # 每次循環(huán)將會(huì)用空閑出來的子進(jìn)程去調(diào)用目標(biāo)
  po.apply_async(worker,(i,))
print("----start----")
po.close() # 關(guān)閉進(jìn)程池,關(guān)閉后po不再接收新的請(qǐng)求
po.join() # 等待po中所有子進(jìn)程執(zhí)行完成,必須放在close語句之后
print("-----end-----")

運(yùn)行結(jié)果

----start----
0開始執(zhí)行,進(jìn)程號(hào)為21466
1開始執(zhí)行,進(jìn)程號(hào)為21468
2開始執(zhí)行,進(jìn)程號(hào)為21467
0 執(zhí)行完畢,耗時(shí)1.01
3開始執(zhí)行,進(jìn)程號(hào)為21466
2 執(zhí)行完畢,耗時(shí)1.24
4開始執(zhí)行,進(jìn)程號(hào)為21467
3 執(zhí)行完畢,耗時(shí)0.56
5開始執(zhí)行,進(jìn)程號(hào)為21466
1 執(zhí)行完畢,耗時(shí)1.68
6開始執(zhí)行,進(jìn)程號(hào)為21468
4 執(zhí)行完畢,耗時(shí)0.67
7開始執(zhí)行,進(jìn)程號(hào)為21467
5 執(zhí)行完畢,耗時(shí)0.83
8開始執(zhí)行,進(jìn)程號(hào)為21466
6 執(zhí)行完畢,耗時(shí)0.75
9開始執(zhí)行,進(jìn)程號(hào)為21468
7 執(zhí)行完畢,耗時(shí)1.03
8 執(zhí)行完畢,耗時(shí)1.05
9 執(zhí)行完畢,耗時(shí)1.69
-----end-----

到此這篇關(guān)于python Pool常用函數(shù)用法總結(jié)的文章就介紹到這了,更多相關(guān)python Pool常用函數(shù)有哪些內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python中的內(nèi)置函數(shù)max()和min()及mas()函數(shù)的高級(jí)用法
  • python print()函數(shù)的end參數(shù)和sep參數(shù)的用法說明
  • python處理emoji表情(兩個(gè)函數(shù)解決兩者之間的聯(lián)系)
  • 解決python2中unicode()函數(shù)在python3中報(bào)錯(cuò)的問題
  • python繪圖subplots函數(shù)使用模板的示例代碼
  • python-opencv中的cv2.inRange函數(shù)用法說明
  • Python input()函數(shù)用法大全
  • python 如何用map()函數(shù)創(chuàng)建多線程任務(wù)
  • Python函數(shù)參數(shù)中的*與**運(yùn)算符
  • 詳解python函數(shù)傳參傳遞dict/list/set等類型的問題
  • Python3去除頭尾指定字符的函數(shù)strip()、lstrip()、rstrip()用法詳解
  • Python進(jìn)階之高級(jí)用法詳細(xì)總結(jié)

標(biāo)簽:臨汾 雙鴨山 陽泉 克拉瑪依 赤峰 貴州 金華 日照

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python Pool常用函數(shù)用法總結(jié)》,本文關(guān)鍵詞  python,Pool,常用,函數(shù),用法,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python Pool常用函數(shù)用法總結(jié)》相關(guān)的同類信息!
  • 本頁收集關(guān)于python Pool常用函數(shù)用法總結(jié)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章