Что происходит во время и после boost :: python :: import?

Документация Boost не указывает это. Когда я использую boost :: python :: import , где именно импортирован указанный модуль? Мое предположение было бы в '__main__' (просто чтобы убедиться).

Кроме того, что происходит, когда объект модуля выходит за пределы области видимости? Учитывая формулировку в документах Boost – «Возвраты: экземпляр объекта, который содержит ссылку на импортированный модуль» – я бы предположил, что только ссылка выходит из области видимости, объект модуля все еще находится внутри '__main__' (или где бы он ни был импортирован).

Основным механизмом является PyImport_ImportModule , и нет, он не касается __main__ . Успешно импортированные модули вставляются в sys.modules dict, поэтому объект не освобождается, когда вы DECREF возвращаете функцию – по-прежнему существует хотя бы одна ссылка.