を使用して R から C 関数を呼び出してい.C
ます。これは数分間実行されるシミュレーションであり、数回の反復ごとに、進行状況に関する情報を R に送信したいと考えています。つまり、C 関数がすべての情報を送信し終えるまで待ちたくありません。一度Rに。
注:RでPRINTしたくありません(Rprintf
そうします)。しかし、私はそのような情報をRに渡したいです。また、含まれてerror
いる場合はエラーをRに渡しますがR.h
、例外処理には興味がありません。
私の最初の方向性: 私futile.logger
は R でそのようなものをログに記録するために使用します。できれば、呼び出し元の R 関数が使用しているのと同じロガーにそのような情報を渡すことができれば、それは素晴らしいことです。しかし、ウェブ上で例を見つけることができませんでした。
別の方向: また、redis を使用してキャッシュに情報を書き込みます。この情報は、redis db に接続する他のユーザーによって消費されます。しかし、redis への C インターフェイスが見つかりません。Lua は使いたくない。私が見つけた最も近いものは、 Write a Custom Redis Command In C - Part 2です。
しかし、私の意見では、私のニーズははるかに単純です。何か案は?
更新: これは、これが理想的に機能することを望んでいる方法です。
# PART 1: webserver calls R function
# the R call
res = .C("montecarlo_sampler.c", as.matrix(inputData), as.matrix(ouputData), as.integer(iterations))
// PART 2: the C function
void montecarlo_sampler( double *inputData, double *outputData, int *iterations){
// do some preprocessing
int iter =1;
while(iter<1000000){
if(iter % 1000 == 0) {
// summarize output from last 1000 iterations
// dump summary data to a logger or redis
}
// do usual sampling stuff in C
}
}
PART 3:
// listening on the django side
// polls redis every few seconds to see if update has reached.
// sends summary output for visualization to client