В чем разница между cElementtree и ElementTree? - PullRequest
14 голосов
/ 28 февраля 2010

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

Ответы [ 4 ]

26 голосов
/ 28 февраля 2010

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

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

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

6 голосов
/ 28 февраля 2010

С http://effbot.org/zone/celementtree.htm:

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

4 голосов
/ 24 мая 2018

Но теперь это то же самое , что и в Python 3.3 , в исходном коде github cElementTree

# cElementTree.py

из xml.etree.ElementTree import *

это только для обратной совместимости

4 голосов
/ 28 февраля 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...