好的,我有多个文本文件,每个文件包含超过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)
事实上,
random.shuffle()
的Python文档明确指出(由我强调):
所以问题是:请注意,即使对于小的 len(x),x 的排列总数也可以迅速增长到大多数随机数生成器的周期之上。这意味着大多数长序列的排列都无法生成。例如,长度为 2080 的序列是适合于 Mersenne Twister 随机数生成器周期内的最大序列。
如何以最快、最有效的方式使我的设置按预期工作?
更多信息:我想将 line_function() 应用于随机行,而不仅仅是按它们的顺序迭代。还请注意,我非常希望每行只处理一次。
最后,提前洗牌文本文件或将其分成较小的文件不是一个选项,也不是我要问的问题。
欢迎提供任何见解!先感谢大家。