스택 오버플로에서 비슷한 질문을 몇 개 발견했지만 필자의 경우 조언이 도움이 될 수 있다고 생각합니다.파일에서 숫자 목록을 읽는 가장 빠른 방법
파일에 약 80,000 개의 실제 값 목록을 저장하고 나중에 읽어야합니다.
첫째, 나는 cPickle
을 시도했지만 독서 시간은 호소하지 않은 :
>>> stmt = """
with open('pickled-data.dat') as f:
data = cPickle.load(f)
"""
>>> timeit.timeit(stmt, 'import cPickle', number=1)
3.8195440769195557
가 그럼 난 일반 텍스트 빨리 읽기 (의미가 허용하는
cPickle
때문에, 숫자를 저장하는 것은 걱정해야한다는 것을 발견 많은 것) :
>>> stmt = """
data = []
with open('text-data.dat') as f:
for line in f:
data.append([float(x) for x in line.split()])
"""
>>> timeit.timeit(stmt, number=1)
1.712096929550171
이 좋은 개선이다,하지만 난 다른 언어로 작성된 프로그램은 상당히 빠른 파일에서 유사한 데이터를 읽을 수 있기 때문에 나는 아직도, 어떻게 든 그것을 최적화 수 있다고 생각.
아이디어가 있으십니까? NumPy와 배열이 가능한 경우
많은 목록을 저장하는 경우 sqlite 데이터베이스가 더 나은 데이터 구조가 아니겠습니까? – BrtH
'csv' 모듈의 리더를 아직 사용해 보지 않으셨습니까? 당신이 부르는 수동 분할을 피할 수 있습니다. – jmetz
@BrtH 데이터베이스가 과도한 것처럼 보입니다.이 목록을 모두로드하면됩니다. – erickrf