Python 進(jìn)程操作之進(jìn)程間通過(guò)隊(duì)列共享數(shù)據(jù),隊(duì)列Queue簡(jiǎn)單示例
本文實(shí)例講述了Python 進(jìn)程操作之進(jìn)程間通過(guò)隊(duì)列共享數(shù)據(jù),隊(duì)列Queue。分享給大家供大家參考,具體如下:
隊(duì)列中的數(shù)據(jù)是放在內(nèi)存中的,可以通過(guò)分布式緩存redis優(yōu)化隊(duì)列。
demo.py(進(jìn)程通過(guò)隊(duì)列共享數(shù)據(jù)):
import multiprocessing def download_from_web(q): """下載數(shù)據(jù)""" # 模擬從網(wǎng)上下載的數(shù)據(jù) data = [11, 22, 33, 44] # 向隊(duì)列中寫(xiě)入數(shù)據(jù) for temp in data: q.put(temp) # 隊(duì)列中寫(xiě)數(shù)據(jù),隊(duì)列滿了會(huì)阻塞。 put_nowait() 隊(duì)列滿了會(huì)拋異常 print("---下載器已經(jīng)下載完了數(shù)據(jù)并且存入到隊(duì)列中----") def analysis_data(q): """數(shù)據(jù)處理""" waitting_analysis_data = list() # 從隊(duì)列中獲取數(shù)據(jù) while True: data = q.get() # 隊(duì)列中讀數(shù)據(jù),隊(duì)列空了會(huì)阻塞。 get_nowait() 隊(duì)列空了會(huì)拋異常 waitting_analysis_data.append(data) if q.empty(): # 隊(duì)列是否為空。 q.full() 隊(duì)列是否滿了。 break # 模擬數(shù)據(jù)處理 print(waitting_analysis_data) def main(): # 1. 創(chuàng)建一個(gè)隊(duì)列 (先進(jìn)先出) q = multiprocessing.Queue(10) # 最多放10個(gè)數(shù)據(jù)。 如果不指定長(zhǎng)度,默認(rèn)最大(和硬件相關(guān)) # 2. 創(chuàng)建多個(gè)進(jìn)程,將隊(duì)列的引用當(dāng)做實(shí)參進(jìn)行傳遞 p1 = multiprocessing.Process(target=download_from_web, args=(q,)) p2 = multiprocessing.Process(target=analysis_data, args=(q,)) p1.start() p2.start() if __name__ == "__main__": main()
運(yùn)行結(jié)果:
---下載器已經(jīng)下載完了數(shù)據(jù)并且存入到隊(duì)列中----
[11, 22, 33, 44]
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python進(jìn)程與線程操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門(mén)與進(jìn)階經(jīng)典教程》、《Python+MySQL數(shù)據(jù)庫(kù)程序設(shè)計(jì)入門(mén)教程》及《Python常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
- 詳解python數(shù)據(jù)結(jié)構(gòu)之隊(duì)列Queue
- Python多線程通信queue隊(duì)列用法實(shí)例分析
- Python高級(jí)編程之消息隊(duì)列(Queue)與進(jìn)程池(Pool)實(shí)例詳解
- python程序 線程隊(duì)列queue使用方法解析
- Python進(jìn)程間通信Queue消息隊(duì)列用法分析
- python隊(duì)列Queue的詳解
- python隊(duì)列queue模塊詳解
- Python3 queue隊(duì)列模塊詳細(xì)介紹
- python中利用隊(duì)列asyncio.Queue進(jìn)行通訊詳解
- Python數(shù)據(jù)結(jié)構(gòu)之優(yōu)先級(jí)隊(duì)列queue用法詳解
相關(guān)文章
用Python復(fù)現(xiàn)二戰(zhàn)德軍enigma密碼機(jī)
大家好,本篇文章主要講的是用Python復(fù)現(xiàn)二戰(zhàn)德軍enigma密碼機(jī),感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2022-01-01Django壓縮靜態(tài)文件的實(shí)現(xiàn)方法詳析
最近在學(xué)習(xí)Django配置靜態(tài)文件,下面這篇文章主要給大家介紹了關(guān)于Django壓縮靜態(tài)文件的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08python數(shù)字圖像處理之基本形態(tài)學(xué)濾波
這篇文章主要為大家介紹了python數(shù)字圖像處理之基本形態(tài)學(xué)濾波示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06Python中使用Flask、MongoDB搭建簡(jiǎn)易圖片服務(wù)器
這篇文章主要介紹了Python中使用Flask、MongoDB搭建簡(jiǎn)易圖片服務(wù)器,本文是一個(gè)詳細(xì)完整的教程,需要的朋友可以參考下2015-02-02Python實(shí)現(xiàn)豎排打印傳單手機(jī)號(hào)碼易撕條
這篇文章主要介紹了Python實(shí)現(xiàn)豎排打印傳單手機(jī)號(hào)碼易撕條,代碼非常簡(jiǎn)單,功能很實(shí)用,推薦給大家,有需要的小伙伴,參考下2015-03-03