Python — выходной поток C ++ не сбрасывается с помощью endl и остановок выполнения

У меня есть программа на C ++, которая содержит несколько cout заявления. Я гарантировал, что все они заканчиваются endl, Моя проблема в том, что программа редко останавливается до тех пор, пока пользователь не нажмет Enter (поэтому я предполагаю, что буфер вывода не всегда очищается, как следует). Нажатие Enter возобновляет выполнение программы. Это довольно проблематично, поскольку выполнение моей программы занимает несколько часов, поэтому я не могу позволить себе постоянно нажимать клавишу ввода! Обратите внимание, что иногда программа останавливается через минуту, а другие — через час.

Вот небольшой фрагмент кода:

for(int i = 0; i < _numIterations; i++){

std::cout << "Iteration " << i << std::endl;

// Computations and more print statements.
}

Обратите внимание, что я использую Theano для встраивания Python, и что мой код Python также содержит операторы print. Мой код Python вызывает только печать, а не sys.stdout.flush() после каждого отпечатка. Однако редко когда выполнение программы зависает после сгенерированного Python оператора печати. Я что-то упустил очевидное? Должен ли я позвонить sys.stdout.flush() в коде Python? К сожалению, я не могу предоставить больше кода, так как моя программа состоит из десятков классов.

[Edit] Я приостановил программу с отладчиком, когда она зависала, и источник не был доступен для отображения. Стек вызовов был:
введите описание изображения здесь

Кажется, что нить ждет. Однако я не настроил эти темы самостоятельно. Они были сгенерированы Cuda или физическим движком Havok, который я тоже использую. Я буду расследовать.

5

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector