我有这段代码可以读取XML API,解析信息,最后将其存储到Excel文件中。
该脚本可以运行,但是需要很长时间并且消耗大量CPU资源。我们正在谈论大约2GB的RAM和90%以上的CPU。 out文件约为15MB,小于30万行,因此它并不大。但是出于某种原因,这会浪费大量资源。
我确信有更好的方法来实现这一目标。我正在为此使用熊猫。 任何在此处更改代码或使用Dask或线程池的方法。不确定实现将如何工作。
我知道我们无法对此进行优化,以至于无法同时针对系统资源和时间进行优化。
请告知如何优化此代码。
# Parsed XML stored into list of lists
computers = []
for computer in tree.iter('computer'):
c = []
c += [computer.find('field1').text]
c += [computer.find('field2').text]
c += [computer.find('field3').text]
c += [computer.find('field4').text]
c += [computer.find('field5').text]
apps = []
for application in computer.iter('Application'):
app = []
app += [application.find('Title').text]
app += [application.find('Version').text]
apps += [app]
computers += [c + [apps]]
# Crated DataFrame from the list
df = pd.DataFrame(columns=['field1','field2','field3','field4','field5','Applications'],data=computers)
# flatten the list of list so each app is a row
dftmp = df['Applications'].apply(pd.Series).T.melt().dropna()
dfapp = (dftmp.value.apply(pd.Series).set_index(dftmp.variable).rename(columns={0:'Title',1:'Version'}))
df2 = df[['field1','field5']].merge(dfapp,left_index=True,right_index=True)
writer = ExcelWriter("file.xlsx")
df2.to_excel(writer,'Full_List')
writer.save()