Я не использовал все эти методы, хотя исследовал их все в тот или иной момент ...
Python C API: для написания кода C, который компилируется в модуль Python, который можно импортироватьв Python.Или для написания модуля Python, который действует как «склеивающий» код для взаимодействия с некоторой библиотекой C.
scipy.weave : Позволяет вставлять биты кода C в код Python, есливы используете NumPy и SciPy для выполнения числовой работы, посмотрите на это.Код C будет выглядеть как строка, например weave.inline (например, printf ("% s", foo) ').
ctypes : модуль Python, который позволяет вампозвонить в C-код из вашего кода Python.Вы в основном импортируете разделяемую библиотеку, а затем делаете вызовы в ее API.Некоторая работа потребовалась для того, чтобы собрать данные в и из этих вызовов.Если вы хотите использовать существующую библиотеку C, которую вы или кто-то другой написал, я бы начал здесь.
pyrex / cython : позволяет писать код Python (используя некоторые специальныесинтаксис), который будет сгенерирован в коде C (который может быть импортирован как модуль Python) и, очевидно, будет работать быстрее, чем если бы он выполнялся через интерпретатор Python.Это похоже на маршрут «Python C API», только он генерирует код на C для вас.Полезно, если у вас есть кусок кода, который является вашим узким местом и действительно медленный.Перепишите эту функцию, используя cython, и импортируйте ее из вызывающего кода.
SWIG : генерирует код оболочки для библиотеки C / C ++.Вы должны получить модуль python, который вы можете импортировать и использовать.
Boost.Python : Это тот, о котором я знаю меньше всего.Похоже, это похоже на SWIG, хотя вы сами пишете слой-обертку, но с большой помощью макросов / функций Boost.
Psyco : немного ускоряет ваш код на Python,Мне никогда не везло с этим.Я бы не стал тратить на это ваше время.Профилируйте свой код, находите свои узкие места и ускоряйте их, используя один из вышеперечисленных методов.