5

データ分析を行ってRを返すコードがありますTRUE/FALSE。場合によっては、入力データが大きすぎてコードが実行され続けることがあります。

データ分析コードを監視するスクリプトが必要です。たとえば、何も返されない場合600 secondsは、実行中のコードを停止して別のことを行います。

STOPのボタンを押すようなものになりますR console

stopbreak、などについては知ってexitいますが、データ分析ループがまだ実行されているため、コードがこれらのステートメントに到達しないため、これらは役に立ちません。

4

3 に答える 3

8

メイン スクリプトを使用setTimeLimit()して、最初にこの関数を持つセカンダリ スクリプトを呼び出すことができます。

setTimeLimit(elapsed = 10)
for(i in c(1:100)){
    cat(i,"\n")
    Sys.sleep(1)
}

これは、期待される動作の例です。ループが 100 までカウントしたいにもかかわらず、10 秒後に私のジョブは制限時間に達し、1 秒ごとにインクリメントが増加します。

于 2016-03-18T13:17:33.143 に答える
0

これは実際にはスクリプトを使用して別のプロセスを監視するソリューションではありませんが、Linux ではulimit -t 300分析を開始する前に、Rscript code.R.

次に、CPU時間が300秒を超えると、カーネルはジョブを強制終了します。これは、ulimit コマンドの後に同じコンソールから実行されるすべてのコマンドに適用されることに注意してください。

于 2016-03-18T13:09:51.057 に答える
0

別の答えはありません。時々、データセットの各行をループする必要があるか、10,000 個のデータセットを 1 つにマージする必要があります。

ループ内でそれを行うと、非表示になります

k <- k  + 1 
print(k)

自分のコードをトレースして、既にどれだけの作業を行ったかを確認できます。Ofcoruse これを改善し、proc.time( を使用してループ内の各 i 間の時間をトレースできます。

于 2016-03-18T13:18:11.977 に答える