前提:如何從磁盤加載,進程,然後將數據存儲在一個普通的hdf5與python,pyqt,h5py同時?
我創建了一個主窗口。其中一個下拉菜單中有一個'ProcessData'項目。當它被選中時,我創建一個QProgressDialog。然後,我在主循環中進行了大量處理,並定期更新QProgressDialog中的標籤和百分比。
我的處理過程如下所示:從文件(numpy memmapped數組)中讀取大量數據,執行一些信號處理,將輸出寫入常見的h5py文件。我遍歷可用的輸入文件,所有的輸出都存儲在一個通用的h5py hdf5文件中。整個過程每個輸入文件大約需要兩分鐘,並將一個CPU引腳設置爲100%。
目標:
如何讓這個過程非阻塞,使UI仍然響應?我仍然希望我的處理函數能夠更新QProgressDialog及其關聯的標籤。
我可以擴展它以同時處理多個數據集並保留更新進度條信息的能力嗎?
我可以從多個線程/進程/ etc寫入h5py嗎?我必須在寫操作上實現鎖定嗎?
軟件版本:
我使用Python 3.3+與numpy的/ SciPy的/等。 UI在PyQt4 4.11/Qt 4.8中,儘管我對使用python 3.4(以及asyncio)或PyQt5的解決方案感興趣。
[這個答案](http://stackoverflow.com/a/16633274/832621)顯示瞭如何使用'numpy.memmap'數組來實現這個功能 – 2015-03-19 00:26:52
我已經成功地使用memmap數組加載數據來讀取來自磁盤的數據,然後將其存儲在h5py文件中。問題是關於同時做這個過程。 – 2015-03-19 16:12:57