2
我有一個python多處理隊列的問題。 我正在做一些數據的硬計算。我創建了幾個進程來降低計算時間,並且在將數據發送到進程之前,數據也被均勻分配。它很好地減少了計算時間,但是當我想要通過多處理返回進程中的數據時。需要時間和整個事情比在主線程中計算慢。Python多處理隊列緩慢
processes = []
proc = 8
for i in range(proc):
processes.append(multiprocessing.Process(target=self.calculateTriangles, args=(inData[i],outData,timer)))
for p in processes:
p.start()
results = []
for i in range(proc):
results.append(outData.get())
print("killing threads")
print(datetime.datetime.now() - timer)
for p in processes:
p.join()
print("Finish Threads")
print(datetime.datetime.now() - timer)
所有線程在完成時都打印完成時間。下面是此代碼的示例輸出
0:00:00.017873 CalcDone
0:00:01.692940 CalcDone
0:00:01.777674 CalcDone
0:00:01.780019 CalcDone
0:00:01.796739 CalcDone
0:00:01.831723 CalcDone
0:00:01.842356 CalcDone
0:00:01.868633 CalcDone
0:00:05.497160 killing threads
60968 calculated triangles
正如您所看到的,一切都很安靜,直到此代碼爲止。
for i in range(proc):
results.append(outData.get())
print("killing threads")
print(datetime.datetime.now() - timer)
這裏是我對礦山計算機和慢一點的一些觀察。 https://docs.google.com/spreadsheets/d/1_8LovX0eSgvNW63-xh8L9-uylAVlzY4VSPUQ1yP2F9A/edit?usp=sharing。在較慢的一個,你沒有看到任何改善。
爲什麼在處理完成後需要很長時間從隊列中獲取項目?有沒有辦法加快速度?