擅长:python、mysql、java
<p>我也不是PyTable的专家,Simon似乎已经很好地介绍了交换内存的概念,但是如果您想要一个算法的具体示例,该算法用于处理太大而无法放入内存的数据,我建议您看看外部排序。在</p>
<p>基本思想是这样的:您不能将所有数据放入内存中,但您需要对其进行排序。但是,你可以把一些数据放入k大小的块中,比如说有j个这样的块。在</p>
<ul>
<li>将数据分成大小为k的块</li>
<li>对于每个块,将其放入内存并进行排序(例如使用快速排序或其他方法),然后将其排序后的版本写回磁盘。在</li>
</ul>
<p>现在,我们有j个排序数据块,我们希望将这些数据合并成一个长的排序数据块。这个问题听起来像是mergesort!所以</p>
<ul>
<li>将每个j排序块中的最小值放入内存</li>
<li>找出这些j值中最小的一个。这是最小的数据!所以,把它写在磁盘上,作为排序数据集的开始。在</li>
<li><em>将新写入的值替换为块中的下一个最小值(这是交换内存的“交换”位)。在</li>
</ul>
<p>现在,内存中的数据是最小的j,<em>,除了我们已经将</em>写入磁盘上最终排序的数据集之外。所以,如果我们重复这个过程,直到所有的数据都被写入到最终的集合中,它最终总是被排序的。在</p>
<p>所以,这只是一个算法的例子,它使用内存交换来处理太大而无法放入内存的数据。PyTable的排序方法可能是这样的。在</p>
<p>另外:<a href="https://stackoverflow.com/questions/5100252/external-sorting">Here</a>是<a href="http://www.youtube.com/watch?v=YjFI9CJy6x0" rel="nofollow noreferrer">some</a>链接<a href="http://web.eecs.utk.edu/~bvz/bvz/classes/cs302/notes/external-sorting2.html" rel="nofollow noreferrer">to</a>更多外部排序的解释。在</p>