Python 程序操作之程序間通過佇列共享資料,佇列Queue簡單示例
阿新 • • 發佈:2020-01-09
本文例項講述了Python 程序操作之程序間通過佇列共享資料,佇列Queue。分享給大家供大家參考,具體如下:
佇列中的資料是放在記憶體中的,可以通過分散式快取redis優化佇列。
demo.py(程序通過佇列共享資料):
import multiprocessing def 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,)) p1.start() p2.start() if __name__ == "__main__": main()
執行結果:
---下載器已經下載完了資料並且存入到佇列中----
[11,44]
更多關於Python相關內容感興趣的讀者可檢視本站專題:《Python程序與執行緒操作技巧總結》、《Python資料結構與演算法教程》、《Python函式使用技巧總結》、《Python字串操作技巧彙總》、《Python入門與進階經典教程》、《Python+MySQL資料庫程式設計入門教程》及《Python常見資料庫操作技巧彙總》
希望本文所述對大家Python程式設計有所幫助。