2

解決済み -- 以下をご覧ください。

Windows 7 で R を使用して doRedis 並列バックエンドを実行しようとしています。また、doRedis ビネットの最初の例を試しているときに問題が発生しています。

library('doRedis')
registerDoRedis('jobs')
startLocalWorkers(n = 2, queue = 'jobs', host = 'localhost')
...

ここで問題が発生します。まず、2 つの R.exe プロセスが実行され、タスク マネージャーに表示されます。次に、2 つの Rterm.exe プロセスが実行され、約 250 MB のデータが読み込まれます (これは、私のライブラリからのライブラリであると予想されます)。ローカル プロジェクトの .Rprofile ファイル)、そして瞬時にシャットダウンします。

私はいくつかのチェックを実行しました:

Redis サーバーは意図したとおりに動作しているようです。次のコマンドを実行して確認できます。

redisInfo()

実際に接続を受信して​​おり、クライアントが接続されていることを確認します。

さらに、複数の独立した R セッションを実行し、「ジョブ」キューに登録すると機能します。つまり、次を実行します。

require('doRedis')
redisWorker('jobs')

そして、メインの R セッションで MC の例を実行するには、次のように入力します。

foreach(icount(10), .combine = sum, .multicombine = TRUE, .inorder = FALSE) %dopar% 4*sum((runif(1e5)^2 + runif(1e5)^2)<1)/1e6

宣伝どおりに動作します -- ターミナル セッションがアクティビティを報告し、メイン セッションが結果を取得します。\改行

したがって、私は助けが必要です...

...メインのRセッションによって呼び出されたワーカープロセスが即座にシャットダウンした理由を追跡します。ただし、どこから始めればよいかわかりません。この問題の可能な回避策はわかっていますが、手間のかからない方法ですべてを開始できる方がはるかに便利です.

ありがとう!

解決

問題は、コマンドによって呼び出された R プロセスstartLocalWorkersがここでライブラリを探すことを知らなかったことです。redisWorkerライブラリ パス リストが適切に変更された R セッションで呼び出した場合、すべて正常に機能しました。しかし、この R セッションに新しいワーカーを起動するように依頼すると、すべてが失敗します。

R_USER_LIBS解決策は、ライブラリ フォルダーへのパスを保持する環境変数を作成することでした。それが完了すると、すべてが完全に機能します。

RStudio ユーザーは、環境変数を変更するたびに、子 R プロセスが変更済みの新しい値を読み取る前に RStudio を再起動する必要があることに注意する必要がありますR_LIBS_USER

4

1 に答える 1