Использование подсказок типа для перевода Python на Cython

Тип подсказок теперь доступен в версии Python 3.5. В спецификации ( PEP 484 ) цели (и не-цели) раскрываются четко:

Обоснование и цели

Этот PEP направлен на предоставление стандартного синтаксиса аннотаций типа, открытие кода Python для упрощения статического анализа и рефакторинга, возможность проверки типа выполнения и (возможно, в некоторых контекстах) генерации кода с использованием информации о типе. […]

Из этих целей статический анализ является самым важным.

Non-цели

Использование подсказок типа для оптимизации производительности остается как упражнение для читателя.

С другой стороны, Cython давно использует статический синтаксис для повышения производительности. Обычно люди переписывают некоторые фрагменты своего кода с синтаксисом Cython, компилируют их и затем импортируют обратно как независимые модули. Это тяжелая работа, которая делает все это на большой базе кода. Но худшая часть состоит в том, что даже когда вы правильно выполняете все вышеперечисленные шаги, у вас нет никакой гарантии, что у вас будет реальное улучшение (из-за проблем совместимости, которые могут быть вызваны, если вы используете некоторые модули).

Было бы трудной задачей написать инструмент, который использует этот новый тип, намекает на вещи, разбросанные в коде, чтобы автоматически перевести их в синтаксис Cython и, возможно, выполнить остальную работу (скомпилировать их в модули и импортировать все их обратно)? Таким образом, можно было бы использовать один и тот же синтаксис языка во всей базе кода.

Теоретически, можно написать такой инструмент, но я не уверен, стоит ли (с точки зрения сложности писать его и реального улучшения, которое будет урожай).

Благодарю.

One Solution collect form web for “Использование подсказок типа для перевода Python на Cython”

Кто-то еще просто спросил о 484 и Cython, PEP-484 Type Annotations с собственными типами , и я ответил потоком с пару месяцев назад около 484 и numpy.

У меня есть сомнения относительно пригодности этой темы для Stackoverflow. Это тема исследования, а не вопрос «как решить эту проблему с кодировкой».

Основываясь на ограниченном чтении, типы-подсказки в 484 являются предварительными, и любое использование ограничено проверкой кода, разработанной 484 авторами. У Py3 давно есть аннотации, но я видел очень мало примеров кода, который их включает. Конечно, не в том, что я здесь сосредоточиваю на том числе.

Другое дело, что cython и numpynumba ) используются вместе с Py2 так же, как и numba , если не больше. Таким образом, самые последние колокола-n-whistles в Py 3.5 обычно игнорируются этими пользователями. Оператор @ является единственным недавним дополнением, которое имеет значение numpy users.

Приглашаем вас ответить, но я могу назначить этот вопрос для закрытия, основываясь на том, что он является дубликатом или вне темы.

Модуль typing на https://github.com/python/typing

mypy – это проверка типа на основе 484, https://github.com/python/mypy (смешно, ~/mypy – это каталог, в который я помещаю все мои скрипты тестирования SO).

Именно здесь выполняется передовая работа по проверке типа Python, а не здесь.

Python - лучший язык программирования в мире.