2

大量の RAW 画像を変換する必要があり、そのために DCRAW プログラムを使用しています。このプログラムは 1 つのコアしか使用していないため、R でこれを並列化したいと考えています。この関数を呼び出すには、次を使用します。

system("dcraw.exe -4 -T image.NEF")

これにより、NEF ファイルと同じフォルダーに image.tiff というファイルが出力されますが、これはまったく問題ありません。これを並列化するために複数のRパッケージを試しましたが、無意味なリターンしか得られません(おそらく私が原因です)。list.files() によって取得された r のこのシステム コールを介して、大きなリスト (1000 以上のファイル) を実行したい

R 内の変数の並列プログラミングに関する情報しか見つかりませんでしたが、システム コールの情報は見つかりませんでした。誰かアイデアはありますか?ありがとう!

4

2 に答える 2

2

変数を使用するか、 を使用するかは問題ではありませんsystem。Windows (並列をサポートしていない) を使用していないと仮定すると、適切なシステムで実行できます。

parallel::mclapply(Sys.glob("*.NEF"),
  function(fn) system(paste("dcraw.exe -4 -T", shQuote(fn))),
  mc.cores=8, mc.preschedule=F)

8 つのジョブを並行して実行します。ただし、Rを使用せずに代わりに使用することもできます

ls *.NEF | parallel -u -j8 'dcraw.exe -4 -T {}'

代わりに (GNU 並列を使用)。

于 2015-12-09T15:43:59.163 に答える
1

Windows では、このソリューション (トップ投票のソリューション) の修正を使用して、たとえば 4 つまたは 8 つ以下のコマンドを同時に実行します。

シェルプロセスの並列実行

R ソリューションではありませんが、気に入っています。

于 2015-12-09T16:39:19.030 に答える