Глава 16. Последующие шаги
Содержание
В этой главе вы рассмотрите три возможных варианта применения сведений из этой книги:
-
Написание модулей расширения C или C++
-
Импорт ваших приложений Python
-
Вклад в сам проект CPython
Первейшим практическим применением этих знаний выступает написание модулей расширения на C или C++.
{Прим. пер.: сборка мусора и подсчёт ссылок предоставляют элегантное, но весьма затратное решение (как в отношении ресурсов, так и в отношении времени исполнения), существует подход к ускорению кода без применения сборки мусора в программах на Rust, которые способны интегрироваться с кодом Python, что описывается в нашем переводе Ускоряем ваш Python при помощи Rust Максвелл Флиттон, Packt, 2022. Написание кода на Rust может стать хорошей альтернативой расширениям на C или C++.}
Существует несколько способов, коими вы способны расширять функциональность Python. Один из них состоит в написании вашего модуля Python на C или C++. Этот процесс способен приводить к усиленной производительности и лучшему доступу к функциям библиотек C и системных вызовов.
Если вы желаете писать модуль расширения C, тогда имеется ряд существенных элементов рассмотренных в этой книге знаний, которыми вы можете пользоваться для справки:
-
Как настраивать компилятор C и компилировать модули C из Главы 3, Компиляция CPython
-
Как настраивать среду разработки для C из Главы 2, Настройка вашей среды разработки
-
Как увеличивать и уменьшать на единицу ссылки на сгенерированные объекты из раздела Подсчёт ссылок в Главе 9, Управление памятью
-
Чем является
PyObject*
и как с ним взаимодействовать из раздела Объекты и типы переменных объектов в главе Главе 11, Объекты и типы -
Что такое слоты типов и как получать доступ к API типа Python из C из раздела Слоты типов в главе Главе 11, Объекты и типы
-
Как добавлять точки прерывания в исходные файлы C для вашего модуля расширения и отлаживать его из Главы 14, Отладка
Смотри также | |
---|---|
Если вы не писали ранее модулей расширений C, обратитесь к книге Real Python Building a C Extension Module. Это руководство содержит конкретный пример построения, компиляции и проверки некого модуля расширения. |
В этой книге рассматривается ряд тем, которые способны помочь вам в улучшении ваших приложений. Вот некоторые примеры:
-
Применение технологий распараллеливания и одновременности для снижения времени выполнения ваших приложений в Главе 10, Параллельность и одновременность
-
Индивидуальная настройка алгоритма сборки мусора для лучшей обработки памяти в вашем приложении посредством сборки в конце задачи из раздела Сборка мусора в Главе 9, Управление памятью
-
Применение отладчиков для отладки расширений C и просеивания проблем из из Главы 14, Отладка
-
Применение профилировщиков для профилирования времени выполнения вашего кода из раздела Профилирование кода Python при помощи cProfile в Главе 15, Эталонное тестирование, профилирование и трассировка
-
Анализ выполнения кадра на предмет инспекции и отладки сложных проблем из раздела Отслеживание выполнения кадра Главе 8, Цикл расчёта
За двенадцать месяцев CPython получил двенадцать новых второстепенных выпусков, сотни изменений и сообщений об ошибках, а также тысячи фиксаций в своём исходном коде.
CPython является одним из самых крупных, наиболее резонансных и наиболее открытых проектов с открытым исходным кодом. Полученные вами в этой книге знания предоставят вам гигантское преимущество в навигации, понимании и помощи для улучшения самого проекта CPython.
Сообщество CPython жаждет большего числа соучастников. Однако прежде чем представлять некое изменение, улучшение или исправление для CPython, вам требуется узнать с чего начинать. Вот несколько идей:
-
Просеивание проблем, возбуждаемое разработчиками в bugs.python.org
-
Исправление небольших, хорошо описанных проблем
Давайте изучим каждую из них чуть подробнее.
Все отчёты об ошибках и запросы на изменение вначале подставляются в bugs.python.org, также именуемый как BPO. Этот вебсайт отслеживает ошибки для проекта CPhyton. Если вы желаете вставить запрос пула в GitHub, тогда вам вначале нужен номер BPO, который является номером проблемы, созданном BPO (bugs.python.org).
Чтобы начать, зарегистрируйтесь в качестве пользователя пройдя в
User/Register
в меню слева.
Представление по умолчанию не является особенно продуктивным и отображает как возбуждённые пользователями, так и вырабатываемые разработчиками ядра проблемы, которые скорее всего уже исправлены.
Вместо этого, после регистрации, проследуйте в Your Queries/Edit
в
меню слева. Эта страница снабдит вас списком запросов на индексацию ошибок, которые вы можете помечать в закладки:
Измените нужное значение на leave in
чтобы включить эти запросы в меню
Your Queries
.
-
Easy Documentation Issues: Ещё не осуществлённые улучшения в документации
-
Easy Tasks: Задачи, которые были выявлены подходящими для начинающих
-
Recently Created: Недавно созданные проблемы
-
Reports Without Replies: Отчёты об ошибках, которые никогда не получали отклика
-
Unread: Сообщения об ошибках, которые никогда не читались
-
50 Latest Issues: Пятьдесят самых последних обновлений проблем
В этих представлениях вы можете следовать руководству Triaging an Issue для самых последних процессов комментирования проблем.
Когда вы установили некую проблему, вы можете приступать к созданию исправления и его подстановки в сам проект CPython. Вот весь процесс:
-
Убедитесь что вы обладаете номером BPO.
-
Создайте ветку в вашей развилке CPython. Обратитесь к Главе 1, Начинаем работать с исходным кодом CPython чтобы ознакомиться с этапами выгрузки исходного кода.
-
Создайте некий тест для воспроизведения вашей проблемы. Ознакомьтесь с разделом Модули тестирования из Главы 13, Комплект тестов.
-
Выполните комплект возвратного тестирования чтобы убедиться что все тесты прошли. Такой комплект возвратного тестирования автоматически запустится в GitHub когда вы вставите свой пул запроса, но лучше вначале выполнить проверку локально. Относительно этапов обратитесь к Главе 13, Комплект тестов.
-
Зафиксируйте свои изменения и доставьте их в GitHub.
-
Пройдите в github.com/python/cpython и создайте запрос пула для своей ветки.
После подстановки своего запроса, он будет отсеян одной из команд сортировщиков и назначен какому- то разработчику ядра или их команде для обзора.
Как уже упоминалось ранее, проект CPython заинтересован в большем числе соучастников. То время, которое пройдёт между представлением вами своего изменения и когда будет выполнен его обзор, может составлять час, неделю или много месяцев. Не пугайтесь если не получите немедленного отклика. Большинство разработчиков являются добровольцами и стремятся просматривать или сливать пулы запросов в пакетах.
Важно | |
---|---|
Важно исправлять только по одной проблеме в пуле запроса. Если вы увидели некую отдельную, несвязанную проблему в каком- то коде при написании своего исправления, сделайте заметку и подставьте её как второй пул запроса. |
Хорошее объяснение проблемы, её решение и соответствующее исправление имеют большое значение чтобы помочь вам быстро объединять изменения.
Помимо собственно исправления ошибок, есть ещё несколько различных типов улучшений, которыми вы можете выполнять свой вклад в проект CPython:
-
Многие функции и модули стандартной библиотеки не имеют тестов своего элемента. Вы можете написать некий тест и представить его в общий проект.
-
Многие функции стандартной библиотеки не обладают современной документацией. Вы можете обновить эту документацию и внести изменения.
Часть того, что делает Python столь замечательным, это его сообщество. Знаете кого- нибудь, изучающего Python? Помогите им! Единственный способ осознать, что вы освоили некое понятие, это пояснить его кому- то ещё.
Продолжайте посещать нас в Интернете и продлите своё путешествие по вебсайту realpython.com и следите за нашей учётной записью в Твиттер @realpython.
Вы ищете еженедельную дозу советов разработчикам Python для улучшения производительности и упрощения ваших рабочих процессов? Хорошие новости: мы отправляем бесплатно электронной почтой новости для таких как вы разработчиков Python.
Рассылаемые нами новостные бюллетени это не просто перечень популярных статей. Вместо этого мы стремимся делиться хотя бы одной оригинальной мыслью в неделю в виде формата (краткого) эссе.
Если вы желаете узнать о чём идёт речь, перейдите на realpython.com/newsletter и введите свой адрес электронной почты в регистрационную форму. Ждём встречи с вами!
Станьте всесторонне развитым последователем Python с большой (и постоянно растущей) коллекцией руководств и подробных учебных материалов по Python на Real Python. В новом, еженедельно публикуемом содержимом вы всегда отыщите нечто, что повысит ваши навыки:
-
Овладевайте практическими навыками работы с Python реального мира: Наши руководства создаются, курируются и подвергаются осмотру экспертами приверженцев Python. В Real Python снабдит вас доверенными ресурсами, которые требуются вам на вашем пути мастерства Python.
-
Встречайтесь с прочими приверженцами Python: Присоединяйтесь к чату Slack Real Python и вливайтесь в нашу команду Real Python и прочих подписчиков. Обсуждайте свои вопросы кодирования и карьеры, принимайте участие в голосовании по выходящим тематическим руководствам или просто пообщайтесь с нами у этого водяного кулера.
-
Интерактивные викторины и учебные программы: Узнавайте где вы находитесь и практикуйтесь в том, что вы изучаете с помощью интерактивных викторин, на практике вызовов кодирования и в путях обучения, сосредоточенных на получении навыков.
-
Отслеживайте свой прогресс обучения: Помечайте уроки как выполненные или находящиеся в освоении и изучайте их на своём собственном месте. Помечайте закладками заинтересовавшие вас занятия и просматривайте их позднее повторно для повышения эффективности их сохранения в памяти.
-
Сертификаты об окончании: Для каждого освоенного вами курса вы получаете сертификат о прохождении (и его можно распечатать), который в частном порядке размещается на вебсайте Real Python. Вставляйте свои сертификаты в ваш портфолио, резюме LinkedIn и прочие вебсайты, чтобы показать всему миру что вы преданный приверженец Python.
-
Регулярно обновляйте знания: Постоянно обновляйте свои навыки и держите руку на пульсе технологии. Мы постоянно выпускаем руководства исключительно для своих участников и обновляем свой контент на постоянной основе.
Знакомьтесь с тем, что доступно на realpython.com/courses