Внутри CPYTHON: гид по интерпретатору Python
CPython, самая популярная реализация Python, абстрагируется от сложностей ОС и предоставляет платформу для создания масштабируемых и высокопроизводительных приложений. Каждому python-разработчику на какой-то стадии необходимо будет узнать, как работает CPython. Это позволит в полной мере использовать его мощь и оптимизировать приложения. Вы разберетесь с основными концепциями внутреннего устройства CPython и научитесь: читать исходный код интерпретатора CPython и свободно ориентироваться в нем; вносить изменения в синтаксис Python и компилировать их в вашу собственную версию CPython; понимать внутреннюю реализацию таких структур, как списки, словари и генераторы; управлять памятью CPython; масштабировать код Python за счет параллелизма и конкурентного выполнения; дополнять базовые типы новой функциональностью; выполнять наборы тестов; профилировать и проводить бенчмарк Python-кода и исполнительной среды; отлаживать код C и Python на профессиональном уровне; изменять или обновлять компоненты библиотеки CPython, чтобы они могли использоваться в будущих версиях.
Цитаты20
CPython использует два аллокатора34:
1. malloc: аллокатор операционной системы для выделения сырой памяти.
2. pymalloc: аллокатор CPython для выделения объектной памяти и PyMem.
1. malloc: аллокатор операционной системы для выделения сырой памяти.
2. pymalloc: аллокатор CPython для выделения объектной памяти и PyMem.
Области выделения памяти
CPython поддерживает три области динамического выделения памяти:
1. Область сырой (raw) памяти — используется для выделения памяти из системной кучи и больших объемов памяти, а также если она выделяется не для объектов Python.
2. Область объектной (object) памяти — используется для выделения памяти для всех объектов Python.
3. Область PyMem — то же, что PYMEM_DOMAIN_OBJ. Этот тип существует для обеспечения совместимости со старыми API.
CPython поддерживает три области динамического выделения памяти:
1. Область сырой (raw) памяти — используется для выделения памяти из системной кучи и больших объемов памяти, а также если она выделяется не для объектов Python.
2. Область объектной (object) памяти — используется для выделения памяти для всех объектов Python.
3. Область PyMem — то же, что PYMEM_DOMAIN_OBJ. Этот тип существует для обеспечения совместимости со старыми API.
В C существуют три механизма выделения памяти:
1. Статическое выделение памяти: требования к памяти вычисляются во время компиляции, а память выделяется исполняемым файлом при запуске.
2. Автоматическое выделение памяти: память для области видимости выделяется из стека вызовов при входе в кадр и освобождается при завершении кадра.
3. Динамическое выделение памяти: память запрашивается и выделяется динамически во время выполнения через вызов API выделения памяти.
1. Статическое выделение памяти: требования к памяти вычисляются во время компиляции, а память выделяется исполняемым файлом при запуске.
2. Автоматическое выделение памяти: память для области видимости выделяется из стека вызовов при входе в кадр и освобождается при завершении кадра.
3. Динамическое выделение памяти: память запрашивается и выделяется динамически во время выполнения через вызов API выделения памяти.
На полке12

1 785 книг
722

267 книг
546

42 книги
22

24 книги
22

100 книг
21