저는 생명과학 전공자이고, 파이썬을 이용해 DNA 염기서열을 분석하고 있습니다.
DNA 서열이 분석되면 두 개의 대용량 text 파일로 저장이 됩니다. 이 두개의 파일에서 각 각 한줄씩 읽어서 (사실 엄밀히 말해서 4줄씩이 한 데이터를 구성하는데 이해를 쉽게 하기 위해 한 줄씩이라고 표현했습니다.) 분석을 해야 합니다.
다행인 것은 Biopython에서 FastqGeneralIterator라는 함수를 제공하는데, 이게 해당 파일에서 한 줄씩(엄밀히 4줄씩) 반환하는 iterator를 만들어 줍니다.
문제는 이게 속도가 느리다보니 (분석 해야 할 파일이 너무 커서) multithread를 구성해서 일을 하고 싶은데, iterator를 어떻게 쪼개서 할당해야 하는지 감이 잡히지 않습니다.
제가 아는한 데이터를 쪼개서 생성한 thread에 할당을 해줘야 하는데, iterator를 쪼개는 방법이 애매하네요. 참고로 파일 전체를 읽어들여서 쪼개기에는 파일이 너무 큽니다. (200만 라인 이상이 될 수도 있습니다.)
이해를 돕기 위해 코드의 일부를 보이겠습니다.