我有大约1000个XML文件,每个文件大小为250MB。我需要从中提取一些数据并写入CSV。不能有任何重复条目。
我有一个4GB内存和AMD A8处理器的系统。你知道吗
我已经通过了一些以前的职位,但他们似乎没有回答我的问题。你知道吗
我已经用Python编写了代码,并在示例XML上进行了测试,效果很好。你知道吗
但是,当我在所有文件上使用它时,速度非常慢(每个文件都差不多15分钟),不得不中途终止进程。你知道吗
什么是加速这一进程的最佳解决方案?你知道吗
这是密码
path='data/*.xml'
t=[]
for fname in glob.glob(path):
print('Parsing ',fname)
tree=ET.parse(fname)
root=tree.getroot()
x=root.findall('//Article/AuthorList//Author')
for child in x:
try:
lastName=child.find('LastName').text
except AttributeError:
lastName=''
try:
foreName=child.find('ForeName').text
except AttributeError:
foreName=''
t.append((lastName,foreName))
print('Parsed ',fname)
t=set(t)
我想要最快的方法来获取条目而不需要任何重复的值。 (也许存储在某个DB中而不是变量t中,那么存储在DB中的每个条目是否会因为更多的空闲RAM而加快速度?-无论是什么方法,我都需要方向)
不要将结果写入Python列表,而是创建一个带有
UNIQUE
约束的数据库表,并将所有结果写入该表。完成所有写入操作后,将DB表作为csv转储。你知道吗如果您不想在写入DB时有任何附加的依赖项,我建议您使用
sqlite3
,因为在最近的Python安装中它是现成的。你知道吗以下是一些代码:
填充数据库后,将其转储到csv,如下所示:
另外,尝试更快的解析方法。 此外,如果
.text
属性在大多数情况下可用, 以下可能比异常处理更快:相关问题 更多 >
编程相关推荐