2014-04-09 94 views
1

我curiuos如何使用python中的大文件?如何在python中處理大文件?

例如,我在硬盤〜20Gb(只是數組數組)的數據集,我想排序這個數組以獲得k最小值。 因此無法將數據集加載到內存(RAM)中。我認爲算法應該是:通過n個塊加載數據集,在塊中查找k min,在存儲器中存儲k min並處理每個塊,因此我們得到k * n個值,然後對它們進行排序以獲得k個最小值。

但問題是如何存儲數據集(什麼格式?),從磁盤加載它的最快方法是什麼(我需要爲特定硬件選擇多大的塊大小?)也許可以通過使用多個線程?

+0

什麼樣的限制是有這些數字?有一些上/下限?這會影響您可能使用的各種方法。 –

+1

請您閱讀http://neopythonic.blogspot.de/2008/10/sorting-million-32-bit-integers-in-2mb.html?你能提供更多關於你的具體任務,數據集等的細節嗎? – dorvak

+6

您應該在數據上使用惰性迭代器['heapq.nsmallest()'](https://docs.python.org/2/library/heapq.html#heapq.nsmallest)。不需要爲每個塊獲得k個最小值 - 您可以通過單個傳遞即時獲得您的結果。 –

回答