Существует несколько способов использования Cython с Python.Код Cython внутри кода Python
Первая версия (стандарт): вы пишете код Cython
mylib.pyx
, то вы запустите этотsetup.py
:from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules = cythonize("mylib.pyx"))
, который компилирует его в
.pyd
файл и затем, в основномmyprogram.py
, вы делаетеimport mylib
.Это стандартный способ работы с Cython.
Вторая версия («на лету компиляции, с
pyximport
»):Вы пишете
mylib.pyx
, и вы не нужно любой setup.py, вы просто делаете это в основном Python код:import pyximport; pyximport.install()
import mylib
Вот оно! Компиляция будет выполняться «на лету» при запуске программы Python!
Вопрос:
Есть ли "третий вариант" ("легче на лету компиляции"):
# myprogram.py
import pyximport
pyximport.compile("""
# Here is directly the Cython code inserted in the main Python code
def mycythonfunction(int a, int b):
cdef int i, j,
...
""")
res = mycythonfunction(3, 2)
т.е. с кодом Cython непосредственно вставленной в основной Python код?
Есть некоторые вещи, которые не работают с использованием pyximport –