我想我一直在改进我之前的问题。基本上,我需要将一个大文本 (csv) 文件分块以将片段发送到 multiprocess.Pool。为此,我认为我需要在可迭代的对象中迭代行。(查看如何在 python 中多处理大型文本文件?)
现在我意识到打开文本文件后的文件对象本身(或 _io.TextIOWrapper 类型)是可逐行迭代的,所以也许我的分块代码(现在在下面,抱歉之前错过它)可以分块它,如果它可以得到它的长度?但如果它是可迭代的,为什么我不能简单地调用它的长度(按行,而不是字节)?
谢谢!
def chunks(l,n):
"""Divide a list of nodes `l` in `n` chunks"""
l_c = iter(l)
while 1:
x = tuple(itertools.islice(l_c,n))
if not x:
return
yield x