Интерфейс между Python и C
JT: Гвидо и Си.
Использование libpython
AKA «безболезненное программирование на Си».
Базовый текст: Extending and Embedding the Python Interpreter
Второй базовый текст: Python/C API Reference Manual
- Объектная организация:
Использование *PyObject
- «протоколы» и их наследование
*_Check()
- Преобразование типов C/Python
- Примеры
- Работа с памятью
- Примеры
- Написание python-модуля
Структура модуля: таблица методов, init-функция, main()
- Исключения
- Добавление объектов в модуль
Cython
AKA «больше угара!»
Структура и идеология: .pyx/.pxd, прозрачное представление конструкций, интерфейсы как в Си, так и в Python
- Простейшие примеры из документации
- Пример какого-то кода на Си с использованием библиотечных функция
- Как из этого сделать модуль
- Работа с памятью
Д/З
- Запустить valgrind и установить Cython
Вариант: скачать отсюда файлы виртуальной машины (Cython-disk1.vmdk и Cython.ovf)
Импорт из командной строки: VBoxManage import Cython.ovf или в GUI: «Файл → Импорт конфигураций → Cython.ovf»
Проброс 22-го порта (ssh) на localhost:2200 (заход по ssh даёт возможность использовать copy+paste)
- Установлен ALT Linux Sisyphus и нужные пакеты
- Работают редакторы: mcedit, vim, nano, geany
Пароли: root — root, user — user
ПрочитатьПросмотреть:
Склонировать репозиторий с заданиями
По аналогии со str.c сделать работу со списком
Удалить memory leak, возникающий при тестировании woexp
Написать интерфейс-модуль к ftw
Написать полезный интерфейс-модуль (которого нет на PyPi ) и пример его использования