1. Queue的使用
可以使用multiprocessing模塊的Queue實現多進程之間的數據傳遞,Queue本身是一個消息列隊程序。
因爲進程之間是獨立的所以, 利用Queue來完成數據的共享
看下面的例子,
模擬,一個進程來進行下載數據,一個進程來進行處理數據
import multiprocessing '''一個進程模擬寫數據''' def data_file(q): data = [1,2,3,4] '''模擬已經有下載好的數據data''' '''向隊列中寫入數據''' for temp in data: q.put(temp) print("---下載器已經下載完了數據並且存入到隊列中---") '''一個進程模擬處理數據''' def modify_data(q): complete = [] '''從對列中獲取數據''' while True: data = q.get() complete.append(data) '''數據處理''' if q.empty(): break print(complete) def main(): # 創建一個隊列、 q = multiprocessing.Queue() '''創建多個進程,將隊列的引用當做實參進行傳遞到裏面''' p1 = multiprocessing.Process(target=data_file,args=(q,)) p2 = multiprocessing.Process(target=modify_data,args=(q,)) p1.start() p2.start() if __name__ == '__main__': main()
運行的結果:
---下載器已經下載完了數據並且存入到隊列中---
[1, 2, 3, 4]