У меня есть программа на 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? К сожалению, я не могу предоставить больше кода, так как моя программа состоит из десятков классов.
Кажется, что нить ждет. Однако я не настроил эти темы самостоятельно. Они были сгенерированы Cuda или физическим движком Havok, который я тоже использую. Я буду расследовать.
Задача ещё не решена.
Других решений пока нет …