В чем разница между cElementtree и ElementTree?

Я знаю немного о доме и хотел бы узнать об ElementTree. Python 2.6 имеет несколько более старую версию ElementTree, но все же можно использовать. Однако похоже, что он поставляется с двумя разными классами: xml.etree.ElementTree и xml.etree.cElementTree. Кто-нибудь, пожалуйста, будьте так добры, чтобы просветить меня своими различиями? Спасибо.

Ответы

Ответ 1

Это одна и та же библиотека (тот же API, те же функции), но ElementTree реализован в Python, а cElementTree реализован в C.

Если вы можете, используйте реализацию C, потому что она оптимизирована для быстрого анализа и использования с низкой памятью и в 15-20 раз быстрее, чем реализация Python.

Используйте версию Python, если вы находитесь в ограниченной среде (загрузка библиотеки C не разрешена).

Ответ 2

Из http://effbot.org/zone/celementtree.htm:

Модуль cElementTree представляет собой реализацию C API ElementTree, оптимизированную для быстрого анализа и использования низкой памяти. В типичных документах cElementTree в 15-20 раз быстрее, чем версия ElementTree на Python, и использует память в 2-5 раз меньше

Ответ 3

ElementTree реализован в python, тогда как cElementTree реализован в C. Таким образом, cElementTree будет быстрее, но также недоступен, если у вас нет доступа к C, например, в Jython или IronPython или в Google App Engine.

Функционально они должны быть эквивалентными.