gpt4 book ai didi

python 3 : How to best iterate over all lines in a big file (+1 million lines) in a random order

转载 作者:太空狗 更新时间:2023-10-30 02:53:35 24 4
gpt4 key购买 nike

好的,所以我有多个文本文件,每个文本文件包含超过 500.000 甚至 1.000.000 行。

目前我在做这样的事情:

import random

def line_function(line):
# Do something with given line

def random_itteration(filepath):
with open(filepath) as f:
lines = f.readlines()
random.shuffle(lines)
for line in lines:
result = line_function(line)

问题是 Python Docsrandom.shuffle() 上明确指出(重点是我加的):

Note that even for small len(x), the total number of permutations of x can quickly grow larger than the period of most random number generators. This implies that most permutations of a long sequence can never be generated. For example, a sequence of length 2080 is the largest that can fit within the period of the Mersenne Twister random number generator.

那么问题是:

让我的设置按预期工作的最快和最有效的方法是什么?

更多信息:

我想将 line_function() 应用于随机行而不是简单地按它们所在的顺序迭代它们是有原因的。另请注意,我非常喜欢只处理每行一次.

最后,不幸的是,预先打乱文本文件或将其分成较小的文件不是一种选择。这不是我要问的。


欢迎任何见解!提前谢谢大家。

最佳答案

正如 Mark Dickinson 所说,您引用的文档行对实际代码基本上没有实际意义。它绝对与您的代码没有任何关系。

洗牌是否对所有可能的排列产生真正均匀的随机分布并不重要。重要的是洗牌是否可以从这样的分布中区分,达到某种区分标准。 random.shuffle 在统计上无法与完美随机洗牌区分开来,直到底层 Mersenne Twister 算法的质量,并且它的区分方式与周期无关。

您无需执行任何特殊操作即可使您的设置“按预期工作”。 random.shuffle 已经有效。

关于 python 3 : How to best iterate over all lines in a big file (+1 million lines) in a random order,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49014601/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com