<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.3 20210610//EN" "JATS-journalpublishing1-3.dtd">
<article article-type="research-article" dtd-version="1.3" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xml:lang="ru"><front><journal-meta><journal-id journal-id-type="publisher-id">ellibs</journal-id><journal-title-group><journal-title xml:lang="ru">Электронные библиотеки</journal-title><trans-title-group xml:lang="en"><trans-title>Russian Digital Libraries Journal</trans-title></trans-title-group></journal-title-group><issn pub-type="epub">1562-5419</issn><publisher><publisher-name>Казанский (Приволжский) федеральный университет</publisher-name></publisher></journal-meta><article-meta><article-id pub-id-type="doi">10.26907/1562-5419-2025-28-2-432-453</article-id><article-id custom-type="elpub" pub-id-type="custom">ellibs-554</article-id><article-categories><subj-group subj-group-type="heading"><subject>Research Article</subject></subj-group><subj-group subj-group-type="section-heading" xml:lang="ru"><subject>Статьи</subject></subj-group></article-categories><title-group><article-title>Перспективы роста производительности параллельных вычислений с помощью технологии субинтерпретаторов в Python</article-title><trans-title-group xml:lang="en"><trans-title>Prospects for Improving the Performance of Parallel Computing using Python Subinterpreter Technology</trans-title></trans-title-group></title-group><contrib-group><contrib contrib-type="author" corresp="yes"><name-alternatives><name name-style="eastern" xml:lang="ru"><surname>Синицын</surname><given-names>Роман Дмитриевич</given-names></name><name name-style="western" xml:lang="en"><surname>Sinitsyn</surname><given-names>Roman Dmitrievich</given-names></name></name-alternatives><email xlink:type="simple">sinicinr2003@gmail.com</email><xref ref-type="aff" rid="aff-1"/></contrib></contrib-group><aff-alternatives id="aff-1"><aff xml:lang="ru"><institution>Российский технологический университет МИРЭА</institution></aff><aff xml:lang="en"><institution>Russian Technological University MIREA</institution></aff></aff-alternatives><pub-date pub-type="collection"><year>2025</year></pub-date><pub-date pub-type="epub"><day>28</day><month>05</month><year>2025</year></pub-date><volume>28</volume><issue>2</issue><elocation-id>432–453</elocation-id><permissions><copyright-statement>Copyright &amp;#x00A9; Синицын Р.Д., 2025</copyright-statement><copyright-year>2025</copyright-year><copyright-holder xml:lang="ru">Синицын Р.Д.</copyright-holder><copyright-holder xml:lang="en">Sinitsyn R.D.</copyright-holder><license xml:lang="ru" license-type="creative-commons-attribution" xlink:href="https://creativecommons.org/licenses/by/4.0/" xlink:type="simple"><license-p>Данная работа распространяется под лицензией Creative Commons Attribution 4.0.</license-p></license><license xml:lang="en" license-type="creative-commons-attribution" xlink:href="https://creativecommons.org/licenses/by/4.0/" xlink:type="simple"><license-p>This work is licensed under a Creative Commons Attribution 4.0 License.</license-p></license></permissions><self-uri xlink:href="https://ellibs.elpub.ru/jour/article/view/554">https://ellibs.elpub.ru/jour/article/view/554</self-uri><abstract><p>Рассмотрена проблема влияния глобальной блокировки интерпретатора на производительность многопоточных приложений в Python. Описана концепция субинтерпретаторов как одного из решений, позволяющих обходить ограничения GIL и обеспечивать эффективное параллельное выполнение кода. Проведен сравнительный анализ субинтерпретаторов с традиционными методами параллельных вычислений, такими как использование процессов и потоков. Результаты экспериментов показали, что субинтерпретаторы значительно повышают производительность в условиях высоких вычислительных нагрузок. Кроме того, исследованы возможности применения субинтерпретаторов в веб-разработках. Отмечены преимущества использования названного подхода для обработки запросов и управления ресурсами в современных веб-приложениях, что может значительно улучшить их масштабируемость и отклик. Новизна проведенного исследования заключается в глубоком анализе субинтерпретаторов в контексте конкретных сценариев использования, что ранее не получило достаточного освещения в научной литературе. Результаты работы подчеркивают необходимость дальнейшего изучения субинтерпретаторов как альтернативного подхода в Python и интерес к этому разработчиков и исследователей в области высокопроизводительных вычислений.
</p></abstract><trans-abstract xml:lang="en"><p>This article discusses the impact of global interpreter blocking on the performance of multithreaded applications in Python. The concept of subinterpreters is described as one of the solutions that allows bypassing the limitations of the GIL and ensuring effective parallel code execution. A comparative analysis of subinterpretors with traditional methods of parallel computing, such as the use of processes and threads, is carried out. The experimental results show that subinterpreters significantly increase performance under conditions of high computing loads. In addition, the article explores the use of subinterpreters in web development. The advantages of using this approach for query processing and resource management in modern web applications are considered, which can significantly improve their scalability and responsiveness. The novelty of this work lies in the in-depth analysis of subinterpreters in the context of specific use cases, which has previously not received sufficient coverage in the scientific literature. The results of the work emphasize the need for further study of subinterpreters as an alternative approach in Python, which is of interest to developers and researchers in the field of high-performance computing.
</p></trans-abstract><kwd-group xml:lang="ru"><kwd>Python</kwd><kwd>CPython</kwd><kwd>PEP</kwd><kwd>GIL</kwd><kwd>субинтерпретатор</kwd><kwd>многопоточность</kwd><kwd>многопроцессорность</kwd><kwd>асинхронность</kwd><kwd>интерпретатор</kwd><kwd>параллельные вычисления</kwd></kwd-group><kwd-group xml:lang="en"><kwd>Python</kwd><kwd>CPython</kwd><kwd>PEP</kwd><kwd>GIL</kwd><kwd>subinterpreter</kwd><kwd>multithreading</kwd><kwd>multiprocessing</kwd><kwd>asynchrony</kwd><kwd>interpreter</kwd><kwd>parallel computing</kwd></kwd-group></article-meta></front><back><ref-list><title>References</title><ref id="cit1"><label>1</label><citation-alternatives><mixed-citation xml:lang="ru">Официальная документация Python. URL: https://www.python.org/</mixed-citation><mixed-citation xml:lang="en">Официальная документация Python. URL: https://www.python.org/</mixed-citation></citation-alternatives></ref><ref id="cit2"><label>2</label><citation-alternatives><mixed-citation xml:lang="ru">Фаулер, М. Asyncio и конкурентное программирование на Python. М.: ДМК Пресс, 2023. 398 с.</mixed-citation><mixed-citation xml:lang="en">Фаулер, М. Asyncio и конкурентное программирование на Python. М.: ДМК Пресс, 2023. 398 с.</mixed-citation></citation-alternatives></ref><ref id="cit3"><label>3</label><citation-alternatives><mixed-citation xml:lang="ru">Beazley D. Understanding the python GIL // PyCON Python Conference. At-lanta, Georgia, 2010.</mixed-citation><mixed-citation xml:lang="en">Beazley D. Understanding the python GIL // PyCON Python Conference. At-lanta, Georgia, 2010.</mixed-citation></citation-alternatives></ref><ref id="cit4"><label>4</label><citation-alternatives><mixed-citation xml:lang="ru">PEP 684 – A Per-Interpreter GIL. URL: https://peps.python.org/pep-0684/</mixed-citation><mixed-citation xml:lang="en">PEP 684 – A Per-Interpreter GIL. URL: https://peps.python.org/pep-0684/</mixed-citation></citation-alternatives></ref><ref id="cit5"><label>5</label><citation-alternatives><mixed-citation xml:lang="ru">Brownlee J. Python Multiprocessing Jump-Start: Develop Parallel Programs, Side-Step the GIL, and Use All CPU Cores (Python Concurrency Jump-Start Series). 2022. 144с.</mixed-citation><mixed-citation xml:lang="en">Brownlee J. Python Multiprocessing Jump-Start: Develop Parallel Programs, Side-Step the GIL, and Use All CPU Cores (Python Concurrency Jump-Start Series). 2022. 144с.</mixed-citation></citation-alternatives></ref><ref id="cit6"><label>6</label><citation-alternatives><mixed-citation xml:lang="ru">Roghult A. Benchmarking Python Interpreters: Measuring Performance of CPython, Cpython, Jython and PyPy: Degree project in computer science and engineering. Sweden, 2016.</mixed-citation><mixed-citation xml:lang="en">Roghult A. Benchmarking Python Interpreters: Measuring Performance of CPython, Cpython, Jython and PyPy: Degree project in computer science and engineering. Sweden, 2016.</mixed-citation></citation-alternatives></ref><ref id="cit7"><label>7</label><citation-alternatives><mixed-citation xml:lang="ru">PEP 554 – Multiple Interpreters in the Stdlib. URL: https://peps.python.org/pep-0554/</mixed-citation><mixed-citation xml:lang="en">PEP 554 – Multiple Interpreters in the Stdlib. URL: https://peps.python.org/pep-0554/</mixed-citation></citation-alternatives></ref><ref id="cit8"><label>8</label><citation-alternatives><mixed-citation xml:lang="ru">PEP 703 – Making the Global Interpreter Lock Optional in CPython. URL: https://peps.python.org/pep-0703/</mixed-citation><mixed-citation xml:lang="en">PEP 703 – Making the Global Interpreter Lock Optional in CPython. URL: https://peps.python.org/pep-0703/</mixed-citation></citation-alternatives></ref><ref id="cit9"><label>9</label><citation-alternatives><mixed-citation xml:lang="ru">PEP 683 – Immortal Objects, Using a Fixed Refcount. URL: https://peps.python.org/pep-0683/</mixed-citation><mixed-citation xml:lang="en">PEP 683 – Immortal Objects, Using a Fixed Refcount. URL: https://peps.python.org/pep-0683/</mixed-citation></citation-alternatives></ref><ref id="cit10"><label>10</label><citation-alternatives><mixed-citation xml:lang="ru">Савостин П.А., Ефремова Н.Э. Практическое применение асинхронного программирования на языке Python при помощи пакета asyncio // Программные системы и вычислительные методы. 2018. №2. С. 11-16.</mixed-citation><mixed-citation xml:lang="en">Савостин П.А., Ефремова Н.Э. Практическое применение асинхронного программирования на языке Python при помощи пакета asyncio // Программные системы и вычислительные методы. 2018. №2. С. 11-16.</mixed-citation></citation-alternatives></ref><ref id="cit11"><label>11</label><citation-alternatives><mixed-citation xml:lang="ru">Pickle — Python object serialization. URL: https://docs.python.org/3/library/pickle.html</mixed-citation><mixed-citation xml:lang="en">Pickle — Python object serialization. URL: https://docs.python.org/3/library/pickle.html</mixed-citation></citation-alternatives></ref><ref id="cit12"><label>12</label><citation-alternatives><mixed-citation xml:lang="ru">Grinberg M. Flask Web Development: Developing Web Applications with Python. O’Reilly Media, 2014. 258 с.</mixed-citation><mixed-citation xml:lang="en">Grinberg M. Flask Web Development: Developing Web Applications with Python. O’Reilly Media, 2014. 258 с.</mixed-citation></citation-alternatives></ref><ref id="cit13"><label>13</label><citation-alternatives><mixed-citation xml:lang="ru">Gardner J. The Web Server Gateway Interface (WSGI) / In: The Definitive Guide to Pylons. Apress, 2009. 513 с.</mixed-citation><mixed-citation xml:lang="en">Gardner J. The Web Server Gateway Interface (WSGI) / In: The Definitive Guide to Pylons. Apress, 2009. 513 с.</mixed-citation></citation-alternatives></ref><ref id="cit14"><label>14</label><citation-alternatives><mixed-citation xml:lang="ru">Locust - A modern load testing framework. URL: https://locust.io/</mixed-citation><mixed-citation xml:lang="en">Locust - A modern load testing framework. URL: https://locust.io/</mixed-citation></citation-alternatives></ref></ref-list><fn-group><fn fn-type="conflict"><p>The authors declare that there are no conflicts of interest present.</p></fn></fn-group></back></article>
