Cython: відмінності між версіями

[неперевірена версія][неперевірена версія]
Вилучено вміст Додано вміст
Linevych (обговорення | внесок)
Опис
Linevych (обговорення | внесок)
приклад програми, доповнення, оновлення даних
Рядок 28:
 
Більша частина коду написана на C, за винятком невеликої заглушки-завантажувача яку написано на звичайному Python, оскільки спроби переписати її на чистому С викликають проблеми через не деякі не задокументовані фрагменти в коді інтерпретатора CPython . Тим не менш, це не є серйозною проблемою, оскільки, як сказано вище Cython залежить від інтерпретатора Python.
 
== Приклад програми ==
 
Приклад програми [[hello world]] на Cython вилядає складніше ніж у більшості інших мов, через те, що він взаємодіє з Python C API та <code>distutils</code> . Принаймні, три файли необхідні для базового проекту:
 
* <code>setup.py</code> який викликає процес збирання <code>distutils</code> який генерує модуль розширення
* Головна програма на python для завантаження модуля розширення
* Файли з кодом на Cython
 
Наступний лістинг демонструє процес побудови та запуску:
 
<source lang="Python">
# hello.pyx - Python модуль, цей код буде трансльовано в C через Cython.
def say_hello():
print "Hello World!"
</source>
 
<source lang="Python">
# launch.py - Python stub loader, завантажує модуль який було створено в Cython.
 
# Цей код завжди інтерпретується як звичайний Python.
# Він не компілюється в C.
 
import hello
hello.say_hello()
</source>
 
<source lang="Python">
# setup.py - не обов’язово, якщо код не буде розповсюджуватись
from distutils.core import setup
from Cython.Build import cythonize
 
setup(name = 'Hello world app',
ext_modules = cythonize("*.pyx"))
</source>
 
Дані команди збирають та запускають програму:
 
<source lang="Bash">
$ python setup.py build_ext --inplace
$ python launch.py
</source>
 
== Посилання ==