Как работает привязка Python GTK без замораживания CPython eval l oop? - PullRequest
2 голосов
/ 15 марта 2020

Как вы знаете, GTK работает так, что когда вы вызываете функцию basi c g_application_run, библиотека получает полный контроль над потоком - она ​​входит в бесконечное событие l oop и все остальное, что происходит в программе должно быть вызвано указанное событие l oop.

Если это так, я хотел бы понять, как работает привязка CPython для GTK.

C Выполнение Python кода основано на внутренней интерпретации байт-кода l oop. Однако, как мы знаем, вызывая g_application_run, мы передаем все управление потоком бесконечному событию GTK l oop. Таким образом - интерпретатор Python l oop должен заморозиться. Кажется, это проблема, потому что, как мне кажется, дальнейший код Python не сможет выполняться в этой ситуации.

Однако, конечно, в Python приложениях GTK код Python разрешен выполнить после запуска GTK. Например, в ответ на такие события, как нажатия кнопок.

Итак, как эта проблема решена в реализации привязки GTK Python?

Обратите внимание, что я задаю этот технический вопрос после того, как открыть более широкий архитектурный вопрос о SE.SE и получить предложение взглянуть на реализацию связывания Python. Я не смог в достаточной степени понять исходный код после некоторой попытки, и именно поэтому я ищу ответы здесь от тех, кто знаком с ним.

...