本文實例講述了Python 進程操作之進程間通過隊列共享數據,隊列Queue。分享給大家供大家參考,具體如下:
隊列中的數據是放在內存中的,可以通過分布式緩存redis優化隊列。
demo.py(進程通過隊列共享數據):
import multiprocessingdef download_from_web(q): """下載數據""" # 模擬從網上下載的數據 data = [11, 22, 33, 44] # 向隊列中寫入數據 for temp in data: q.put(temp) # 隊列中寫數據,隊列滿了會阻塞。 put_nowait() 隊列滿了會拋異常 print("---下載器已經下載完了數據并且存入到隊列中----")def analysis_data(q): """數據處理""" waitting_analysis_data = list() # 從隊列中獲取數據 while True: data = q.get() # 隊列中讀數據,隊列空了會阻塞。 get_nowait() 隊列空了會拋異常 waitting_analysis_data.append(data) if q.empty(): # 隊列是否為空。 q.full() 隊列是否滿了。 break # 模擬數據處理 print(waitting_analysis_data)def main(): # 1. 創建一個隊列 (先進先出) q = multiprocessing.Queue(10) # 最多放10個數據。 如果不指定長度,默認最大(和硬件相關) # 2. 創建多個進程,將隊列的引用當做實參進行傳遞 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()
運行結果:
---下載器已經下載完了數據并且存入到隊列中----
[11, 22, 33, 44]
更多關于Python相關內容感興趣的讀者可查看本站專題:《Python進程與線程操作技巧總結》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》、《Python+MySQL數據庫程序設計入門教程》及《Python常見數據庫操作技巧匯總》
希望本文所述對大家Python程序設計有所幫助。
新聞熱點
疑難解答