HTTP를 통해 다중 회선 데이터를 받았으며 한 줄로 구성했습니다. 특정 키워드가 들어있는 줄만 필터링하여 파일에 기록해야합니다.파이썬에서 줄 단위로 문자열을 효율적으로 처리하는 방법은 무엇입니까?
과도한 메모리를 사용하지 않고 이러한 개별 라인을 어떻게 처리합니까? 나는. 줄 바꿈에서 입력 문자열을 분리하지 않고 목록을 처리하지 않고도?
자이 썬 특정 솔루션도 환영합니다. 이 있습니다, 그러나
for line in re.finditer('.*?\n', data):
# do stuff
:
'StringIO'는 메모리 단위로'.split()'보다 반드시 좋을 수는 없으며, 변경 가능하기 때문에 반드시 같은 문자열에 의해 뒷받침되지는 않습니다 * 초기 값으로 전달합니다. – lvc
@lvc : 그렇지 않습니다. 그것에 쓰지 않으면 같은 문자열을 유지합니다. 글을 쓰더라도 읽지 않으면 더 많은 메모리를 소비하지 않습니다. 확신하고 싶으면 소스 코드를 확인하십시오. 단지'StringIO' 객체를 만들고 읽기만하면 여분의 메모리가 필요하지 않습니다. – Avaris
자이 썬의 소스 코드를 보았을 때,'StringIO' 모듈은 실제로 당신이 제안한대로 동작하지만, 새로운'io.StringIO' 클래스는 자이 썬의'cStringIO' (그리고 나는 CPython의'cStringIO'를 체크하지 않았다.) – lvc