2017-02-17 1 views
-1

현재 많은 시간이 소요되는 텍스트 파일에 대해 일부 처리를 수행합니다. 나는 활동 모니터에서 현재 응용 프로그램이 단지 하나의 쓰레드만을 사용한다는 사실을 관찰했다. 그래서 파일을 multiprocessing.cpu_count() 파일로 분할하고 별도의 동일한 프로세스를 수행하기로 결정했다.파이썬 텍스트 파일 분할

내 코드를 다음과 같이

with open(filename) as f: 
    files = f.splitinto(cpu_count) 
    for file in files: 
     "start the threads to do the same process for each file" 
+2

귀하의 궁금한 점은 무엇입니까? 당신은 통제하에있는 것처럼 보입니다. –

+0

파일을 여러 파일로 분할하는 f.splitinto와 같은 방법은 없습니다. 그게 내가 찾는 것입니다. – Mehr

+0

아. 괜찮아. 파일을 여러 파일로 분할하면 무엇을 의미합니까? 어떻게 쪼개지? –

답변

1

file.readlines() 당신에게 목록으로 텍스트 파일의 라인을 제공합니다

with open(filename) as f: 
    "do the process" 

나는이 점을 변경하고 싶습니다. 즉, 100 줄의 텍스트 파일이있는 경우 readlines()list 길이 100을 제공합니다. 각 항목은 파일의 한 줄입니다. 이에 이어, 당신은 할 수 있습니다 :

with open('test.txt', 'r') as myfile: 
    lines = myfile.readlines() 
    lines_list[0] = lines[0:len(lines)/cpu_count) 
    # ... and so on.. 

된 후에는 선을 분할하고 그러나 당신이 원하는을 처리 할 수 ​​있습니다.

+0

5GB의 파일을 고려하십시오. 너무 많은 메모리를 소비하지 않습니까? – Mehr

+0

그럴 것이다. 그런 다음 원래 파일을 여러 파일로 분할하고 이미 가지고있는 코드를 사용하여 파일을 처리하는 별도의 기능을 작성하려고합니다. 요점은, 텍스트 파일을 가지고 있다면 그것을 가장 쉽게 나눌 수 있다는 것입니다. – Anomitra