Не видя, какую библиотеку YAML вы используете (PyYAML, ruamel.yaml
) и ваш реальный код, это невозможно объяснить окончательно. Однако, например, если вы используете стандартную процедуру загрузки:
from ruamel.yaml import YAML
yaml = YAML(typ='safe')
with open('somefile.yaml') as fp:
yaml.load(fp)
для загрузки документа YAML 1.2 (или 1.1) из файла. На самом деле вы будете использовать считыватель / сканер, написанный на C, если вы запустите его с использованием CPython, и будете запускать чистую версию Python при запуске с использованием PyPy.
В зависимости от файла считыватель / сканер, основанный на C, дает повышение скорости загрузки на один-два порядка по сравнению с чистой реализацией Python, поэтому я не удивляюсь, что это не может сравниться с PyPy, компилирующей Python.
В прошлом я кратко рассматривал использование сканера / сканера на основе C при использовании PyPy, но это не казалось тривиальным, и поскольку этот сканер / сканер с кодировкой C устарел и нуждается в обновлении, этот план был заморожен. .
При использовании PyYAML (для устаревших документов YAML 1.1) действует аналогичный принцип, хотя он не будет автоматически использовать этап чтения / сканирования на основе C, если это явно не указано иным образом.