CPython, самая популярная реализация Python, абстрагируется от сложностей ОС и предоставляет платформу для создания масштабируемых и высокопроизводительных приложений. Каждому python-разработчику на какой-то стадии необходимо будет узнать, как работает CPython. Это позволит в полной мере использовать его мощь и оптимизировать приложения. Вы разберетесь с основными концепциями внутреннего устройства CPython и научитесь: читать исходный код интерпретатора CPython и свободно ориентироваться в нем; вносить изменения в синтаксис Python и компилировать их в вашу собственную версию CPython; понимать внутреннюю реализацию таких структур, как списки, словари и генераторы; управлять памятью CPython; масштабировать код Python за счет параллелизма и конкурентного выполнения; дополнять базовые типы новой функциональностью; выполнять наборы тестов; профилировать и проводить бенчмарк Python-кода и исполнительной среды; отлаживать код C и Python на профессиональном уровне; изменять или обновлять компоненты библиотеки CPython, чтобы они могли использоваться в будущих версиях.
Author(s): Энтони Шоу
Series: Библиотека программиста
Edition: 1
Publisher: Питер
Year: 2023
Language: Russian
Commentary: Publisher's PDF
Pages: 352
City: СПб.
Tags: Debugging; Python; Concurrency; Parallel Programming; Memory Management; Benchmarking; Profiling; Best Practices; Object-Oriented Programming; C; Testing; Standard Library; Tracing; Abstract Syntax Trees
Об авторе
О группе редакторов
Предисловие
Введение
Как использовать эту книгу
Дополнительные материалы и учебные ресурсы
Загрузка исходного кода CPython
Что в исходном коде?
Настройка среды разработки
IDE или редактор?
Настройка Visual Studio
Настройка Visual Studio Code
Настройка Vim
Выводы
Компиляция CPython
Компиляция CPython на macOS
Компиляция CPython на Linux
Установка специализированной версии
Знакомство с Make
Make-цели CPython
Компиляция CPython на Windows
Профильная оптимизация
Выводы
Грамматика и язык Python
Почему CPython написан на C, а не на Python
Спецификация языка Python
Генератор парсеров
Повторное генерирование грамматики
Выводы
Конфигурация и ввод
Конфигурация состояния
Структура данных конфигурации среды выполнения
Конфигурация сборки
Сборка модуля из входных данных
Выводы
Лексический анализ и парсинг с использованием синтаксических деревьев
Генерирование конкретного синтаксического дерева
Парсер/токенизатор CPython
Абстрактные синтаксические деревья
Важные термины
Пример: добавление оператора «почти равно»
Выводы
Компилятор
Исходные файлы
Важные термины
Создание экземпляра компилятора
Флаги будущей функциональности и флаги компилятора
Таблицы символических имен
Основная компиляция
Ассемблер
Создание объекта кода
Использование Instaviz для вывода объекта кода
Пример: реализация оператора «почти равно»
Выводы
Цикл вычисления
Исходные файлы
Важные термины
Построение состояния потока
Построение объектов кадров
Выполнение кадра
Стек значений
Пример: добавление элемента в список
Выводы
Управление памятью
Выделение памяти в C
Проектирование системы управления памятью Python
Аллокаторы памяти CPython
Область выделения объектной памяти и PyMem
Область выделения сырой памяти
Нестандартные области выделения памяти
Санитайзеры выделенной памяти
Арена памяти PyArena
Подсчет ссылок
Сборка мусора
Выводы
Параллелизм и конкурентность
Модели параллелизма и конкурентности
Структура процесса
Многопроцессорный параллелизм
Многопоточность
Асинхронное программирование
Генераторы
Сопрограммы
Асинхронные генераторы
Субинтерпретаторы
Выводы
Объекты и типы
Примеры этой главы
Встроенные типы
Типы объектов
Тип type
Типы bool и long
Тип строки Юникода
Словари
Выводы
Стандартная библиотека
Модули Python
Модули Python и C
Набор тестов
Запуск набора тестов в Windows
Запуск набора тестов в Linux или macOS
Флаги тестирования
Запуск конкретных тестов
Модули тестирования
Вспомогательные средства тестирования
Выводы
Отладка
Обработчик сбоев
Компиляция поддержки отладки
LLDB для macOS
GDB
Отладчик Visual Studio
Отладчик CLion
Выводы
Бенчмаркинг, профилирование и трассировка
Использование timeit для микробенчмарка
Использование набора тестов производительности Python
Профилирование кода Python с использованием cProfile
Профилирование кода C с DTrace
Выводы
Что дальше?
Создание расширений C для CPython
Улучшение приложений Python
Участие в проекте CPython
Дальнейшее обучение
Приложение. Введение в C для Python-программистов
Препроцессор C
Базовый синтаксис C
Выводы
Благодарности