Python多執行緒/多程序操作佇列
阿新 • • 發佈:2019-01-09
最近在做深度學習,需要採用多程序的方式實現資料處理。為了實現資料的快速處理,我先後嘗試了把資料一口氣讀入記憶體、多執行緒和多程序的方式。當然,肯定是多程序雙佇列的方式最好,因為可以充分利用多核和cpu。
一般來說匯入佇列可以這樣操作:
import Queue
myqueue = Queue.Queue(100)
但是這種佇列不是同步佇列,在多程序中不能用於通訊。
在多程序中,需要這樣使用:
from multiprocessing import Process, Queue
myqueue = Queue(100)
舉一個例子:
結果為:1#! /usr/bin/env python from multiprocessing import Process, Queue from time import sleep def pro1(num): num.put([1,1]) def pro2(num): sleep(2) print num.qsize() if __name__ == '__main__': num = Queue() process1 = Process(target = pro1, args = (num,)) process1.start() process2 = Process(target = pro2, args = (num,)) process2.start()
而使用多執行緒,則方法如下:
#! /usr/bin/env python import threading from time import sleep import Queue def pro1(): num.put([1,1]) def pro2(): sleep(2) print num.qsize() if __name__ == '__main__': num = Queue.Queue() thread1 = threading.Thread(target = pro1) thread1.start() thread2 = threading.Thread(target = pro2) thread2.start()
結果為:1
當然,tensorflow等深度學習框架的資料輸入還是應該通過多程序的方式實現。這個後續再說。