1. 程式人生 > 實用技巧 >NO.A.0002——FreeNAS安裝與配置(版本9.3與11.04)/linux客戶端iscsi共享儲存/FreeNASA配置iscsi/Linux下Targets連結/iscsi自動掛載

NO.A.0002——FreeNAS安裝與配置(版本9.3與11.04)/linux客戶端iscsi共享儲存/FreeNASA配置iscsi/Linux下Targets連結/iscsi自動掛載

本文例項講述了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程式設計有所幫助。