ebook img

Внутри CPYTHON: гид по интерпретатору Python PDF

352 Pages·2023·6.914 MB·Russian
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Внутри CPYTHON: гид по интерпретатору Python

В Н У Т Р И C P Y T H ON ГИД ПО ИНТЕРПРЕТАТОРУ PYTHON Энтони Шоу 2023 ББК 32.973.2-018.1 УДК 004.43 Ш81 Шоу Энтони Ш81 Внутри CPYTHON: гид по интерпретатору Python. — СПб.: Питер, 2023. — 352 с.: ил. — (Серия «Библиотека программиста»). ISBN 978-5-4461-1925-7 CPython, самая популярная реализация Python, абстрагируется от сложностей ОС и предо- ставляет платформу для создания масштабируемых и высокопроизводительных приложений. Каждому python-разработчику на какой-то стадии необходимо будет узнать, как работает CPython. Это позволит в полной мере использовать его мощь и оптимизировать приложения. Вы разберетесь с основными концепциями внутреннего устройства CPython и научитесь: читать исходный код интерпретатора CPython и свободно ориентироваться в нем; вносить изменения в синтаксис Python и компилировать их в вашу собственную версию CPython; понимать вну- треннюю реализацию таких структур, как списки, словари и генераторы; управлять памятью CPython; масштабировать код Python за счет параллелизма и конкурентного выполнения; до- полнять базовые типы новой функциональностью; выполнять наборы тестов; профилировать и проводить бенчмарк Python-кода и исполнительной среды; отлаживать код C и Python на про- фессиональном уровне; изменять или обновлять компоненты библиотеки CPython, чтобы они могли использоваться в будущих версиях. 16+ (В соответствии с Федеральным законом от 29 декабря 2010 г. № 436-ФЗ.) ББК 32.973.2-018.1 УДК 004.43 Права на издание получены по соглашению с DevAcademy Media Inc. Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав. Информация, содержащаяся в данной книге, получена из источников, рассматриваемых издательством как надежные. Тем не менее, имея в виду возможные человеческие или технические ошибки, издательство не может гарантировать абсолютную точность и полноту приводимых сведений и не несет ответственности за возможные ошибки, связанные с использованием книги. Издательство не несет ответственности за доступ- ность материалов, ссылки на которые вы можете найти в этой книге. На момент подготовки книги к изданию все ссылки на интернет-ресурсы были действующими. ISBN 978-1775093343 англ. © Real Python (realpython.com) ISBN 978-5-4461-1925-7 © Перевод на русский язык ООО «Прогресс книга», 2022 © Издание на русском языке, оформление ООО «Прогресс книга», 2022 © Серия «Библиотека программиста», 2022 Оглавление Об авторе ..........................................................................................................................13 О группе редакторов .....................................................................................................13 Предисловие ........................................................................................14 Введение ...............................................................................................16 Как использовать эту книгу .......................................................................................17 Дополнительные материалы и учебные ресурсы ...............................................18 Загрузка исходного кода CPython .......................................................21 Что в исходном коде? ...................................................................................................22 Настройка среды разработки .............................................................24 IDE или редактор? ........................................................................................................24 Настройка Visual Studio ..............................................................................................25 Настройка Visual Studio Code ...................................................................................28 Настройка Vim ................................................................................................................36 Выводы ..............................................................................................................................40 Компиляция CPython ...........................................................................41 Компиляция CPython на macOS ..............................................................................42 Компиляция CPython на Linux ................................................................................44 6 Оглавление Установка специализированной версии ................................................................46 Знакомство с Make ........................................................................................................46 Make-цели CPython ......................................................................................................48 Компиляция CPython на Windows ..........................................................................51 Профильная оптимизация ..........................................................................................56 Выводы ..............................................................................................................................58 Грамматика и язык Python ...................................................................59 Почему CPython написан на C, а не на Python ...................................................60 Спецификация языка Python ....................................................................................62 Генератор парсеров ........................................................................................................66 Повторное генерирование грамматики ..................................................................67 Выводы ..............................................................................................................................71 Конфигурация и ввод ..........................................................................73 Конфигурация состояния ...........................................................................................75 Структура данных конфигурации среды выполнения .....................................77 Конфигурация сборки ..................................................................................................79 Сборка модуля из входных данных .........................................................................80 Выводы ..............................................................................................................................85 Лексический анализ и парсинг с использованием синтаксических деревьев ....................................................................87 Генерирование конкретного синтаксического дерева .......................................88 Парсер/токенизатор CPython ...................................................................................91 Абстрактные синтаксические деревья ....................................................................96 Важные термины ..........................................................................................................104 Пример: добавление оператора «почти равно» .................................................104 Выводы ............................................................................................................................109 Оглавление 7 Компилятор ........................................................................................110 Исходные файлы ..........................................................................................................111 Важные термины ..........................................................................................................111 Создание экземпляра компилятора ......................................................................112 Флаги будущей функциональности и флаги компилятора ..........................114 Таблицы символических имен ................................................................................116 Основная компиляция ...............................................................................................121 Ассемблер .......................................................................................................................128 Создание объекта кода ...............................................................................................131 Использование Instaviz для вывода объекта кода ............................................133 Пример: реализация оператора «почти равно» .................................................134 Выводы ............................................................................................................................139 Цикл вычисления ...............................................................................140 Исходные файлы ..........................................................................................................141 Важные термины ..........................................................................................................141 Построение состояния потока .................................................................................142 Построение объектов кадров ...................................................................................143 Выполнение кадра .......................................................................................................150 Стек значений ...............................................................................................................153 Пример: добавление элемента в список ...............................................................157 Выводы ............................................................................................................................161 Управление памятью .........................................................................163 Выделение памяти в C ...............................................................................................163 Проектирование системы управления памятью Python ................................167 Аллокаторы памяти CPython ..................................................................................169 Область выделения объектной памяти и PyMem ............................................178 8 Оглавление Область выделения сырой памяти ........................................................................181 Нестандартные области выделения памяти .......................................................181 Санитайзеры выделенной памяти .........................................................................183 Арена памяти PyArena ...............................................................................................185 Подсчет ссылок .............................................................................................................186 Сборка мусора ...............................................................................................................192 Выводы ............................................................................................................................201 Параллелизм и конкурентность .......................................................203 Модели параллелизма и конкурентности ...........................................................205 Структура процесса ....................................................................................................205 Многопроцессорный параллелизм ........................................................................208 Многопоточность .........................................................................................................230 Асинхронное программирование ...........................................................................242 Генераторы ......................................................................................................................243 Сопрограммы ................................................................................................................249 Асинхронные генераторы .........................................................................................254 Субинтерпретаторы ....................................................................................................255 Выводы ............................................................................................................................259 Объекты и типы ..................................................................................260 Примеры этой главы ...................................................................................................261 Встроенные типы .........................................................................................................262 Типы объектов ..............................................................................................................263 Тип type ...........................................................................................................................264 Типы bool и long ...........................................................................................................268 Тип строки Юникода ..................................................................................................272 Словари ...........................................................................................................................282 Выводы ............................................................................................................................287 Оглавление 9 Стандартная библиотека ...................................................................288 Модули Python .............................................................................................................288 Модули Python и C .....................................................................................................290 Набор тестов .......................................................................................293 Запуск набора тестов в Windows ............................................................................293 Запуск набора тестов в Linux или macOS ...........................................................294 Флаги тестирования ...................................................................................................295 Запуск конкретных тестов ........................................................................................295 Модули тестирования ................................................................................................296 Вспомогательные средства тестирования ...........................................................297 Выводы ............................................................................................................................298 Отладка ...............................................................................................299 Обработчик сбоев ........................................................................................................299 Компиляция поддержки отладки ...........................................................................300 LLDB для macOS .........................................................................................................301 GDB ..................................................................................................................................305 Отладчик Visual Studio ..............................................................................................307 Отладчик CLion ............................................................................................................309 Выводы ............................................................................................................................314 Бенчмаркинг, профилирование и трассировка ..............................315 Использование timeit для микробенчмарка .......................................................316 Использование набора тестов производительности Python ........................318 Профилирование кода Python с использованием cProfile ............................322 Профилирование кода C в DTrace .........................................................................325 Выводы ............................................................................................................................330 10 Оглавление Что дальше? ........................................................................................331 Создание расширений C для CPython .................................................................331 Улучшение приложений Python .............................................................................332 Участие в проекте CPython ......................................................................................333 Дальнейшее обучение .................................................................................................336 Приложение. Введение в C для Python-программистов ................338 Препроцессор C ............................................................................................................338 Базовый синтаксис C ..................................................................................................341 Выводы ............................................................................................................................348 Благодарности ....................................................................................349 ОТ ИЗДАТЕЛЬСТВА Ваши замечания, предложения, вопросы отправляйте на [email protected] ( издательство «Питер», компьютерная редакция). Мы будем рады узнать ваше мнение! На веб-сайте издательства www.piter.com вы найдете подробную информацию о наших книгах.

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.