나는 내 이전 질문을 끊임없이 개선하고 있다고 생각합니다. 기본적으로 조각을 다중 프로세스로 보내려면 큰 텍스트 (csv) 파일을 청크 (chunk)해야합니다. 이렇게하려면 반복 가능한 선에서 반복 할 수있는 객체가 필요하다고 생각합니다. 반복 가능한 객체가 파이썬에서 길이가없는 이유는 무엇입니까?
지금 나는 당신이 TEXTFILE을 연 후 파일 객체 자체 (또는 _io.TextIOWrapper 유형) 라인으로 반복 가능한 라인 인 것을 깨달았다 (how to multiprocess large text files in python? 참조), 그래서 아마 내 이전을 누락, 지금 아래 (미안 코드를 청크) 그것의 길이를 얻을 수 있다면, 그것을 덩어리 수 있습니까? 그러나 iterable 인 경우 왜 단순히 길이를 호출 할 수 없습니까 (줄 단위가 아닌 바이트 단위)?
감사합니다.
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
고마워요! 나는 8 개의 코어가 결국 라인을 계산하는 비용으로 실제 작업을 끝내면 더 많은 것을 얻길 바랍니다. 청크에 넣고 코어에 보내는 줄 수를 모르는 채로 청킹을 할 수있는 방법은 없습니다. 나는 이것이 내가 py3k에서 얻을 수있는만큼 좋기를 바랍니다 : –