Python 進程操作之進程間通過隊列共享數據,隊列Queue簡單示例

 更新時間:2019年10月11日 11:13:13   作者:houyanhua1   我要評論
這篇文章主要介紹了Python 進程操作之進程間通過隊列共享數據,隊列Queue,結合實例形式分析了Python進程數據共享、隊列數據處理相關操作技巧,需要的朋友可以參考下

本文實例講述了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, args=(q,))
  p1.start()
  p2.start()
if __name__ == "__main__":
  main()

運行結果:

---下載器已經下載完了數據并且存入到隊列中----
[11, 22, 33, 44]

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python進程與線程操作技巧總結》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》、《Python+MySQL數據庫程序設計入門教程》及《Python常見數據庫操作技巧匯總

希望本文所述對大家Python程序設計有所幫助。

相關文章

最新評論

pc蛋蛋计划下载