2014-02-16 2 views
2

Во-первых, если у меня есть проект, который представляет собой все файлы python (не C++ или C), в чем преимущество использования Cython, vs, скажем, используя библиотеку python напрямую (для интеграции в большую C++-программу)?Как использовать Cython для компиляции внешнего модуля из моего файла setup.py?

Во-вторых, для компиляции .pyx файлы Cython, я намерен использовать setup.py файл с этим кодом:

from distutils.core import setup 
from Cython.Build import cythonize 

setup(
    ext_modules = cythonize(MyString) 
) 

Что должно MyString быть? имя файла python (.pyx) без расширения? должен ли он включать полный путь? где должен находиться файл setup.py, чтобы он cythonized файлы? Если это не так, как правильно кинировать файлы?

  • Что такое правильный способ использовать Cython при работе с библиотекой, содержащей только .py файлы?

  • Как использовать setup.py для cythonize (см. Более подробные вопросы выше)?

ответ

1

Хм, здесь есть много вопросов.

  1. В чем преимущество использования Cython, vs, скажем, с использованием библиотеки python напрямую?

    Если вы используете только библиотеку Python (например, для сетевого контента), использование Cython не должно сильно помочь. Cython очень поможет вам, если:

    • вам нужен доступ к внешней библиотеке C/C++;
    • или вам нужно создать свою собственную быструю структуру данных, возможно, используя выделение C/C++;
    • или у вас есть интенсивное приложение для хрустания.
  2. Какой должна быть MyString?

    Здесь много вариантов. Я обычно использую

    setup(
        cmdclass = {'build_ext': build_ext}, 
        ext_modules = [Extension("myext", ["myext.pyx", "myextlib.pyx"])]) 
    

    Вы найдете много информации на Cython compilation documentation Для маленькой библиотеки, вы можете поместить его в том же каталоге, в качестве источника.

0

может дать вам более высокую производительность.

+0

альтернатива btw cythonizing lib или использование библиотеки python с лицензией в другом месте кода. не пипы. – octoback

Смежные вопросы