3

を使用して 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
4

1 に答える 1