RStudioに関する質問。コンソールでコードを実行していると仮定します。
_> code1()
_
code1()
はコンソールに何も出力しないが、上記のcode1()
が完了するまでに1時間かかると仮定します。 code1()
を待っている間、何か他のことに取り組みたいです。出来ますか?次のように使用できるrunInBackground
のような関数はありますか
_> runInBackground(code1())
> code2()
_
別の方法は、2つのRStudioを実行するか、Rscript
を使用してcode1()
を実行するバッチファイルを作成することですが、RStudioコンソールを離れずに実行できるもっと簡単な方法があるかどうかを知りたいと思いました。 Rのヘルプドキュメントを閲覧しようとしましたが、何も思いつきませんでした(または、適切なキーワードを使用しなかった可能性があります)。
将来のパッケージ (私は作者です)はこれを提供します:
library("future")
plan(multisession)
future(code1())
code2()
参考までに、使用する場合
plan(cluster, workers = c("n1", "n3", "remote.server.org"))
その後、将来の式はそれらのマシンの1つで解決されます。使用する
plan(future.BatchJobs::batchjobs_slurm)
slurmジョブスケジューラキューを介して解決されます。
この質問は、 Rで非同期関数を実行する と密接に関連しています。
これはいつでも実行できます。これは理想的ではありませんが、ほとんどの目的で機能します。
Shell(cmd = 'Rscript.exe some_script.R', wait=FALSE)
parallel パッケージのmcparallel()関数は、Linuxを使用している場合、つまり...
library(parallel)
Job1 = mcparallel(code1())
JobResult1 = mccollect(Job1)
バージョン1.2以降のRStudioは、この機能を提供します。バックグラウンドでスクリプトを実行するには、[ジョブ]パネルで[ジョブの開始]を選択します。バックグラウンドジョブの結果を作業環境にコピーするオプションもあります。