麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發(fā) > Python > 正文

python實現(xiàn)通過隊列完成進程間的多任務(wù)功能示例

2024-09-09 19:02:24
字體:
供稿:網(wǎng)友

本文實例講述了python實現(xiàn)通過隊列完成進程間的多任務(wù)功能。分享給大家供大家參考,具體如下:

1.通過隊列完成進程間的多任務(wù)

import multiprocessingdef download_data(q):  """下載數(shù)據(jù)"""  # 模擬從網(wǎng)上下載數(shù)據(jù)  data = [11, 22, 33, 44]  # 向隊列中寫入數(shù)據(jù)  for temp in data:    q.put(temp)  print("----數(shù)據(jù)下載完成并且已存入隊列----")def analysis_data(q):  """數(shù)據(jù)處理"""  waitting_analysis_data = list()  # 從隊列中獲取數(shù)據(jù)  while True:    data = q.get()    waitting_analysis_data.append(data)    if q.empty():      break  print(waitting_analysis_data)def main():  # 1.創(chuàng)建一個隊列  q = multiprocessing.Queue()  q1 = multiprocessing.Process(target=download_data, args=(q,))  q2 = multiprocessing.Process(target=analysis_data, args=(q,))  q1.start()  q2.start()if __name__ == '__main__':  main()

在這里插入圖片描述

2.進程池pool

在程序?qū)嶋H處理問題過程中,忙時會有成千上萬的任務(wù)需要被執(zhí)行,閑時可能只有零星任務(wù)。那么在成千上萬個任務(wù)需要被執(zhí)行的時候,我們就需要去創(chuàng)建成千上萬個進程么?首先,創(chuàng)建進程需要消耗時間,銷毀進程也需要消耗時間。第二即便開啟了成千上萬的進程,操作系統(tǒng)也不能讓他們同時執(zhí)行,這樣反而會影響程序的效率。因此我們不能無限制的根據(jù)任務(wù)開啟或者結(jié)束進程。那么我們要怎么做呢?

在這里,要給大家介紹一個進程池的概念,定義一個池子,在里面放上固定數(shù)量的進程,有需求來了,就拿一個池中的進程來處理任務(wù),等到處理完畢,進程并不關(guān)閉,而是將進程再放回進程池中繼續(xù)等待任務(wù)。如果有很多任務(wù)需要執(zhí)行,池中的進程數(shù)量不夠,任務(wù)就要等待之前的進程執(zhí)行任務(wù)完畢歸來,拿到空閑進程才能繼續(xù)執(zhí)行。也就是說,池中進程的數(shù)量是固定的,那么同一時間最多有固定數(shù)量的進程在運行。這樣不會增加操作系統(tǒng)的調(diào)度難度,還節(jié)省了開閉進程的時間,也一定程度上能夠?qū)崿F(xiàn)并發(fā)效果。

案例:

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

在這里插入圖片描述

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python進程與線程操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進階經(jīng)典教程》、《Python+MySQL數(shù)據(jù)庫程序設(shè)計入門教程》及《Python常見數(shù)據(jù)庫操作技巧匯總》

希望本文所述對大家Python程序設(shè)計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产一区二区三区四区波多野结衣 | 欧美一级黄色影院 | 久久17 | 欧美在线观看黄色 | 毛片在哪看 | 成人免费av在线播放 | 欧美一级特黄aaaaaaa什 | 午夜免费一区 | 中国videos露脸hd | 91美女福利视频 | 欧美一级做一级爱a做片性 91在线视频观看 | 视频一区二区在线播放 | 一区免费| 久久最新视频 | 欧美三级日本三级少妇99 | av免费在线不卡 | 国产 一区 精品 | 蜜桃视频最新网址 | 国产分类视频 | 性爱视频在线免费 | av在线免费观看网 | 嗯~啊~弄嗯~啊h高潮视频 | 一级黄片毛片免费看 | 成人免费乱码大片a毛片视频网站 | 免费a级黄色片 | 免费国产 | 91精品国产综合久久婷婷香蕉 | 国产精品视频在线观看免费 | 免费一级特黄毛片视频 | 久久国产精品99国产 | 轻点插视频 | 精品中文字幕久久久久四十五十骆 | 精品午夜影院 | 一二区电影 | 久久久久99一区二区三区 | 国产一区视频在线免费观看 | 久久96国产精品久久久 | 男人的天堂色偷偷 | 欧日一级片 | av老司机久久 | 成人性生活视频在线观看 |