【发布时间】:2019-03-26 00:28:36
【问题描述】:
我有大量 128 位无符号整数需要排序以供分析(大约一万亿!)。
我对 128 位整数所做的研究让我走入了一条死胡同,numpy 似乎并不完全支持它们,而且内部排序功能是内存密集型的(使用列表)。
例如,我想要将十亿个 128 位无符号整数加载到内存中(如果只是二进制数据,则为 16GB)并对它们进行排序。有问题的机器有 48GB 的 RAM,所以应该可以使用 32GB 进行操作。如果必须在较小的块中完成,那没关系,但是尽可能大的块会更好。 Python 是否有一种排序算法可以在不需要大量开销的情况下获取此类数据?
我可以使用列表的 .sort 方法对 128 位整数进行排序,它可以工作,但它无法扩展到我需要的级别。我确实有一个 C++ 版本,它是定制编写的,并且运行速度非常快,但我想在 Python 中复制它以加快开发时间(而且我没有编写 C++,而且我不习惯那种语言) .
抱歉,如果需要更多信息来描述问题,请提出任何问题。
【问题讨论】:
-
你能把数字写入一个文本文件,每行一个,然后在命令行中使用
sort -n吗? -
John,谢谢,但我认为文本文件不会有帮助,因为当数据以二进制文件表示时已经是 16TB。这可能适用于某些类型的排序,特别是如果它是一次性的,但我猜测(但可能是错误的)它也不会很好地扩展。
标签: python sorting numpy int128