2015-01-23 1 views
0

저는 python에서 200,000 개의 파일을 함께 추가합니다 (예상되는 볼륨은 13GB). 내 노트북에서 이걸 달리고있어. 아주 천천히 진행되므로 (나는 5 개의 파일을 1 초라고 말하고 싶습니다), 최적화되어 있는지 확인하고 싶습니다. 이 작업을 성능 향상시킬 수있는 방법이 있습니까?Python : 200,000 개의 파일을 추가하는 큰 작업을 최적화하십시오.

from __future__ import print_function 
from xml.dom import minidom 
import os 

f=open('C:\\temp\\temp.xml','w') 
f.write("") 
f.close(); 

counter = 0 
for root, dirs, files in os.walk("C:\Users\username\Desktop\mydata"): 
    for file in files: 
     if file.endswith(".xml"): 

      xmldoc = minidom.parse(os.path.join(root, file)) 
      article = xmldoc.getElementsByTagName('article').item(0) 
      with open("C:\\temp\\temp.xml", "a") as myfile: 
       myfile.write(article.toxml('utf-8')) 
      counter+=1 
      print(counter) 
+0

우선, 나는 파일 핸들을 열어서 "C : \\ temp \\ temp.xml"에 반복해서 닫지 않을 것이다. –

+1

부수적으로, 처음'f = open ('C : \\ temp \\ temp.xml', 'w')'은 파일을 만들 필요가 없습니다. 파일이 존재하지 않을 때 "a"로 열면 파일이 생성됩니다. –

+0

@ JackManey 그래서 열린 구술을 파일 구걸로 옮긴 다음 맨 마지막에 한 번 닫습니다. Jan-PhilipGehrcke 이미 파일이있는 경우 다시 설정하려고합니다. 올바른 방법이 아닌가? – Stephane

답변

1

내 코드의 거대한 병목 현상은 minidom 도서관이었다. 나는 lxml으로 전환했고 코드는 (심각하게) 100 배 빨랐다.

관련 문제