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

Читать отрывокОтрывок
CPython, самая популярная реализация Python, абстрагируется от сложностей ОС и предоставляет платформу для создания масштабируемых и высокопроизводительных приложений. Каждому python-разработчику на какой-то стадии необходимо будет узнать, как работает CPython. Это позволит в полной мере использовать его мощь и оптимизировать приложения. Вы разберетесь с основными концепциями внутреннего устройства CPython и научитесь: читать исходный код интерпретатора CPython и свободно ориентироваться в нем; вносить изменения в синтаксис Python и компилировать их в вашу собственную версию CPython; понимать внутреннюю реализацию таких структур, как списки, словари и генераторы; управлять памятью CPython; масштабировать код Python за счет параллелизма и конкурентного выполнения; дополнять базовые типы новой функциональностью; выполнять наборы тестов; профилировать и проводить бенчмарк Python-кода и исполнительной среды; отлаживать код C и Python на профессиональном уровне; изменять или обновлять компоненты библиотеки CPython, чтобы они могли использоваться в будущих версиях.
Уже прочитали? Что скажете?
CPython использует два аллокатора34:

1. malloc: аллокатор операционной системы для выделения сырой памяти.

2. pymalloc: аллокатор CPython для выделения объектной памяти и PyMem.
1 Нравится
Комментировать
Области выделения памяти
CPython поддерживает три области динамического выделения памяти:

1. Область сырой (raw) памяти — используется для выделения памяти из системной кучи и больших объемов памяти, а также если она выделяется не для объектов Python.

2. Область объектной (object) памяти — используется для выделения памяти для всех объектов Python.

3. Область PyMem — то же, что PYMEM_DOMAIN_OBJ. Этот тип существует для обеспечения совместимости со старыми API.
Комментировать
В C существуют три механизма выделения памяти:

1. Статическое выделение памяти: требования к памяти вычисляются во время компиляции, а память выделяется исполняемым файлом при запуске.

2. Автоматическое выделение памяти: память для области видимости выделяется из стека вызовов при входе в кадр и освобождается при завершении кадра.

3. Динамическое выделение памяти: память запрашивается и выделяется динамически во время выполнения через вызов API выделения памяти.
Комментировать
Питер
Издательский дом «Питер»
Издательский дом «Питер»
1 785 книг
722
Айтишная полка
undlake
undlake
267 книг
546
Аналитика
Ira
Ira
42 книги
22
Python
Гудвин устал
Гудвин устал
24 книги
22
Программирование
Алексей Ермаков
Алексей Ермаков
100 книг
21