【发布时间】:2019-11-14 18:29:34
【问题描述】:
我有以下代码,当我运行它时,会出现长时间的停顿,然后在解析后打印出一堆行,然后重复该过程。所以我想知道为什么会有暂停以及如何重新编码以提高内存和速度方面的效率?
#!/usr/bin/env python
import os
from lxml import etree
subdirectories = []
for root, dirs, files in os.walk("/dev/shm/heatmap/OpenHPC"):
for i in dirs:
if "compute" in i:
subdirectories.append(i)
#for i in subdirectories:
# os.system("cd /dev/shm/heatmap/OpenHPC/" + i + " && rrdtool dump cpu_temp.rrd cpu_temp.xml")
for i in subdirectories:
with open(i+"/cpu_temp.xml") as f:
doc = etree.parse(f)
it = iter(doc.xpath(
'//comment()[following-sibling::row] | //row/v/text()'
))
for db_date, db_value in zip(it, it):
with open("temperatureData.txt", 'a+') as f:
f.write(i + " " + db_date.text.strip()[0:23] + " " + db_value + "\n")
print(f.write(i + " " + db_date.text.strip()[0:23] + " " + db_value + "\n")
【问题讨论】:
-
马上,您可能只想在每个子目录中打开一次“temperatureData.txt”,然后在该上下文中写入值。此外,您希望尽量减少对该文件的写入,因此将所有这些写入与换行符加入该文件并写入一次也可以节省时间。
-
你能发布一个示例代码吗?我了解每个子目录打开一次“temperatureData.txt”,但是当您谈论最小化写入时还不清楚。
-
刚刚发布了答案!
标签: python-3.x lxml elementtree