91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在Python3中使用進程池和回調函數

發布時間:2021-03-17 14:58:00 來源:億速云 閱讀:142 作者:Leah 欄目:開發技術

這篇文章給大家介紹如何在Python3中使用進程池和回調函數,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

方式一

from multiprocessing import Pool


def deal_task(n):
 n -= 1
 return n


if __name__ == '__main__':
 n = 10
 p = Pool(4)
 for i in range(4):
  res = p.apply(deal_task, args=(n,))
  #調用apply是一個串行的效果,任務會被進程一個一個的處理,直接得到結果
  #前提是執行的任務必須要有返回值
  print(res)

方式二

from multiprocessing import Pool


def deal_task(n):
 n -= 1
 return n


if __name__ == '__main__':
 n = 10
 p = Pool(4)
 obj_l = []
 for i in range(4):
  #調用apply_async會返回一個對象,主進程會不斷扔任務給線程池,讓子線程處理
  obj = p.apply_async(deal_task, args=(n,))
  obj_l.append(obj)
 #首先函數要有返回值
 #調用close目的是防止join期間會有別的任務被添加到任務列表中
 #不調用close會報錯
 p.close()
 p.join()
 #join是要讓子進程全部處理完之后得到結果統一處理,還有一個非常重要的原因是進程池依附于主進程,主進程結束,進程池消失。進程池的任務沒有被處理程序就結束了。
 for obj in obj_l:
  print(obj.get())

方式三

from multiprocessing import Pool

import requests


def get_page(url):
 ret = requests.get(url).text
 return {'url': url, 'ret': ret}


def parse_page(ret):
 with open('ab.txt', 'a') as f:
  f.write('%s - %s\n' % (ret['url'], len(ret['ret'])))


if __name__ == '__main__':
 urls = [
  'https://www.baidu.com',
  'http://www.openstack.org',
  'https://www.python.org',
  'https://help.github.com/',
  'http://www.sina.com.cn/'
 ]
 p = Pool()
 for url in urls:
  #使用回調函數,當get_page下載完后,主線程調用parse_page自動處理get_page下載的結果,節省了parse_page的時間,該場景用于一個函數為耗時操作并且產生數據,另一個函數是非耗時操作,這樣就節省了非耗時操作函數的時間
  p.apply_async(get_page, args=(url,), callback=parse_page)

 p.close()
 p.join()
 print('主')

join是要讓子進程全部處理完之后得到結果統一處理,還有一個非常重要的原因是進程池依附于主進程,主進程結束,進程池消失。進程池的任務沒有被處理程序就結束了。

關于如何在Python3中使用進程池和回調函數就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临邑县| 宁海县| 田林县| 阳西县| 丹巴县| 东明县| 尼勒克县| 林芝县| 鄂托克旗| 石屏县| 迁安市| 济宁市| 浮山县| 六安市| 柳州市| 永平县| 贡嘎县| 洛南县| 油尖旺区| 四子王旗| 新民市| 凌海市| 东港市| 滦南县| 苗栗市| 桃园县| 河池市| 阳新县| 建宁县| 社会| 玛曲县| 达孜县| 玉林市| 石狮市| 井陉县| 志丹县| 明溪县| 那曲县| 额尔古纳市| 陆良县| 嵊州市|