5

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 物理エンジンによって生成されました。調査します。

4

0 に答える 0