knitrファイルに埋め込まれた非常に長い並列化計算を監視したい。Knitr:チャンクコード出力を端末にリダイレクト
計算は私が書いたパッケージに依存しており、関連する関数はマルチコアパッケージのmclapplyを使用して並列化しています。この関数は、utilsパッケージのtxtProgressBarのわずかに変更された実装を使用して、計算の進行を監視するプログレスバーを出力します。プログレスバーはターミナルに印刷され、mclapplyの繰り返しが完了するたびにfifo接続を介して更新されます。
これは、ファイルからのソースまたは関数の直接呼び出しではうまく動作しますが、これをknitr内で動作させる方法はありません。関連するチャンクオプションを試しましたが、メッセージと警告は端末にリダイレクトされますが、プログレスバーは取得できません。誰も助けることができますか?
申し訳ありませんが、最小限の動作例は提供していませんが、私はこの設定でどのように作成できるかわかりません。
@Yihuiの返信をありがとう、私はあなたが落ちると思っていた!私はあなたの最初の提案の行に沿って何かを試みます、2番目の提案は計算をキャッシュする能力を失うことを暗示します。マルチコアの問題はさておき、チャンク内で実行される計算の状態を監視する方法は何か知っていますか? –
おそらく、あなたはファイルのような他の場所に進捗状況を書くことができます: 'txtProgressBar(...、file = 'progress_temp.txt')'。または、stderrに書き込んでください。私は私の答えを更新します。 –
'StdErr()'ハックのために感謝しています。私がそれをしている間、knitrのおかげで、毎日使う素晴らしいツールです。 –