Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 行洗牌多TB文本文件_Python_Shuffle_Pypy - Fatal编程技术网

Python 行洗牌多TB文本文件

Python 行洗牌多TB文本文件,python,shuffle,pypy,Python,Shuffle,Pypy,问题:行洗牌一个T TB的文本文件,其中包含n行(同一行可以在文本文件中出现多次),给定Z TB的RAM,其中T=Z*100。准洗牌可以 目前我正在使用,它执行准随机播放,但有点慢。算法是O(n),所以我相信速度慢是由Python造成的。我曾考虑在C中重新实现它,但在此之前,我想知道是否有人知道现有的解决方案 不工作的东西:GNU SUF(加载整个文件要在内存中被拖曳),GNU排序-R(散列每行并输出相同的行)。< /P> < P>我用下面的C++实现解决了这个问题,它明显快:不看代码,我强烈认

问题:行洗牌一个T TB的文本文件,其中包含n行(同一行可以在文本文件中出现多次),给定Z TB的RAM,其中T=Z*100。准洗牌可以

目前我正在使用,它执行准随机播放,但有点慢。算法是O(n),所以我相信速度慢是由Python造成的。我曾考虑在C中重新实现它,但在此之前,我想知道是否有人知道现有的解决方案


不工作的东西:GNU SUF(加载整个文件要在内存中被拖曳),GNU排序-R(散列每行并输出相同的行)。< /P> < P>我用下面的C++实现解决了这个问题,它明显快:

不看代码,我强烈认为这种缓慢是由I/O造成的,而不是由Python造成的(可能是由seek造成的)。从统计学上讲,你需要“完美”的洗牌,还是能接受一些取舍?不,不需要完美的洗牌。代码几乎不做任何搜索。它在内存中加载x GB块,将它们洗牌,然后将它们写入磁盘,总共有K个块,使K*x=T。然后它从每个块中读取x/K字节,洗牌,并将其写入准洗牌输出文件。我看不出代码或算法有任何明显的问题。您可能希望通过探查器来查找任何热点。考虑将<代码> Python < /Cord>标签添加到您的问题中,以提高可见性。好,将添加标记。