Несколько независимых встроенных интерпретаторов Python на нескольких потоках операционной системы вызываются из программы C/C++

Встраивание интерпретатора Python в приложении C/C++ хорошо документируется. Что лучший подход должен выполнить несколько интерпретатор Python на нескольких потоках операционной системы (т.е. один интерпретатор на одном потоке операционной системы в рамках того же процесса), которые вызываются из приложения C/C++? Таким приложениям можно было также связать проблемы с фрагментацией памяти и ограничениями Py_Finalize ().

Один такой подход может быть следующим:

  1. Поток Python и следовательно GIL, отключенный в pyconfig.h для хранения этого простым (#undef WITH_THREAD)
  2. Все изменяемые глобальные переменные исходного кода интерпретатора Python, перемещенного в выделенную "куче" структуру, на которую ссылаются через Локальную память потока (Ссылка: Python по Телефону).

Мои вопросы:

  1. Есть ли какой-либо лучший подход?
  2. Есть ли какие-либо инструменты, которые могут автоматизировать преобразование глобальных переменных исходного кода интерпретатора Python к выделенной "куче" структуре, на которую ссылаются через TLS (Локальная память потока)?

Подобные темы обсуждены здесь:

22
задан bhadra 3 June 2010 в 19:16
поделиться