cout
複数のステートメントを含む C++ プログラムがあります。それらのすべてが . で終わることを確認しましたendl
。私の問題は、ユーザーが Enter キーを押すまでプログラムがほとんど停止しないことです (そのため、出力バッファーが常にフラッシュされるとは限りません)。Enter キーを押すと、プログラムの実行が再開されます。私のプログラムの実行には数時間かかるので、これはかなり問題です。プログラムは 1 分後に停止することもあれば、1 時間以上後に停止することもあります。
小さなコード スニペットを次に示します。
for(int i = 0; i < _numIterations; i++){
std::cout << "Iteration " << i << std::endl;
// Computations and more print statements.
}
私は埋め込み Python を介して Theano を使用しており、私の Python コードには print ステートメントも含まれていることに注意してください。私のPythonコードはsys.stdout.flush()
、各印刷の後ではなく、印刷のみを呼び出します。ただし、Python で生成された print ステートメントの後でプログラムの実行がハングすることはまれです。明らかな何かを見逃しましたか?sys.stdout.flush()
Python コードでを呼び出す必要がありますか? 残念ながら、私のプログラムは数十のクラスで構成されているため、これ以上のコードを提供することはできません。
[編集] ハングしているときにプログラムをデバッガーで一時停止しましたが、表示できるソースがありませんでした。コール スタックは次のとおりです。
スレッドが待機しているようです。ただし、これらのスレッドを自分で設定したことはありません。それらは、Cuda または私が使用している Havok 物理エンジンによって生成されました。調査します。