cElementtree和ElementTree有什么区别?

时间:2010-02-28 16:32:12

标签: python xml

我知道一点dom,想了解ElementTree。 Python 2.6有一个较旧的ElementTree实现,但仍然可用。但是,看起来它有两个不同的类:xml.etree.ElementTree和xml.etree.cElementTree。有人请你这么善意以他们的分歧来启发我吗?谢谢。

5 个答案:

答案 0 :(得分:26)

它是相同的库(相同的API,相同的功能),但ElementTree是用Python实现的,而cElementTree是用C实现的。

如果可以,请使用C实现,因为它针对快速解析和低内存使用进行了优化,并且比Python实现快15-20倍。

如果您处于有限的环境中(不允许加载C库),请使用Python版本。

答案 1 :(得分:6)

来自http://effbot.org/zone/celementtree.htm

  

cElementTree模块是ElementTree API的C实现,针对快速解析和低内存使用进行了优化。在典型文档中,cElementTree比ElementTree的Python版本快15-20倍,并且使用的内存减少了2-5倍

答案 2 :(得分:6)

来自https://docs.python.org/3/library/xml.etree.elementtree.html

版本3.3中已更改:只要有可用,此模块将使用快速实现。不推荐使用xml.etree.cElementTree模块。

因此,对于Python 3.3及更高版本,只需使用:

import xml.etree.ElementTree as ET

答案 3 :(得分:4)

ElementTree是在python中实现的,而cElementTree是在C中实现的。因此,cElementTree会更快,但在您无法访问C的地方也不可用,例如在Jython或IronPython或Google App Engine上。

从功能上讲,它们应该是等价的。

答案 4 :(得分:3)

但是现在它们是同一个东西as of Python 3.3,在github源代码中cElementTree

  

#cElementTree.py

     

来自xml.etree.ElementTree import *

仅用于向后兼容