0
我有〜1000個獨立的HDF5文件存儲在磁盤上。每個處理器只需要大約10ms就可以加載到內存中,所以我想知道什麼是並行加載它們的最佳方式,以便我能夠實現線性性能提升。Python - 並行讀取hdf5文件
我已經嘗試了多處理,但是由於設置進程的開銷,最終結果會比連續加載它們慢。我研究過Cython,特別是prange,但是無法優化它以加快速度。任何指針將不勝感激!
我有〜1000個獨立的HDF5文件存儲在磁盤上。每個處理器只需要大約10ms就可以加載到內存中,所以我想知道什麼是並行加載它們的最佳方式,以便我能夠實現線性性能提升。Python - 並行讀取hdf5文件
我已經嘗試了多處理,但是由於設置進程的開銷,最終結果會比連續加載它們慢。我研究過Cython,特別是prange,但是無法優化它以加快速度。任何指針將不勝感激!
這聽起來像是一個mapreduce的工作,但如果你只有一臺機器,那麼我會建議使用管道。編寫一個腳本來打開文件並將數據打印到標準輸出,然後在另一個腳本中從標準輸入和流程中讀取數據。您將script1重定向到script2。
# script1.py
FILES_TO_READ = ...
for filename in FILES_TO_READ:
# open the file
# do work
# print data
# script2.py
while True:
line = input()
# do work
$> ./script1.py | ./script2.py
我不認爲並行處理會加快您的進程,因爲它只會加快計算時間,而不會加快磁盤訪問時間。不過,我會建議通過將文件存儲在zip文件中來獲得性能。 –
如果從磁盤讀取所有10毫秒的數據,那麼您認爲可以首先加快流程的速度?如果你正在使用100%的帶寬,我想沒有什麼可以做的,對吧? – JohanL
是不是可以使用Cython並釋放GIL進行多線程?難道理論上不允許IO邊界任務的並行處理並提高性能? – Michael