YAML: Python vs PHP?

Добрый день. Есть yaml файл. На php использовать yaml_parse_file чтобы его преобразовать в массив. Ну вроде работает шустро. Потом, ради интереса, решил посмотреть как это выглядит в Python. Поставил PyYAML.
import yaml
stream = open("example.yaml", 'r')
print yaml.load(stream)

В Питоне пока не силен. Почему-то вывод массива по времени около 40 секунд, причем из них секунд 20 просто тишина, а потом начинается вывод данных, в то время как в PHP вывод print_r(массив) или разобранный foreach-ом масив того же файла занимает секунд 10. Почему есть такая разница? Может библиотеку другую? Или кусок кода неверный?
  • Вопрос задан
  • 2583 просмотра
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
yaml_parse_file реализован на C, то есть быстрее ничего нет. А вот в PyYAML написан на python. Попробуйте в php разбирать используя пакет symfony/yaml - будет примерно тот же результат (только отключите перед этим модуль yaml пекловский).
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
PyYAML тоже, вроде бы, имеет модули на C. Вот здесь есть пример: pyyaml.org/wiki/PyYAMLDocumentation

Я думаю, в вашем случае будет выглядеть так:

from yaml import load, dump

try:
    from yaml import CLoader as Loader, CDumper as Dumper
except ImportError:
    from yaml import Loader, Dumper

with open('example.yaml', 'r') as stream:
    data = load(stream, Loader=Loader)

output = dump(data, Dumper=Dumper)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы