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