Python 程序,程序間通過佇列共享資料,佇列Queue
阿新 • • 發佈:2018-12-07
佇列中的資料是放在記憶體中的,可以通過分散式快取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, args=(q,)) p1.start() p2.start() if __name__ == "__main__": main()