R对文件的并行系统调用

R parallel system call on files

我必须转换大量的 RAW 图像,我正在使用程序 DCRAW 来做这件事。因为这个程序只使用一个核心,所以我想在 R 中并行化它。要调用这个函数,我使用:

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

这会导致在与 NEF 文件相同的文件夹中输出一个名为 image.tiff 的文件,这完全没问题。现在我尝试了多个 R 包来并行化它,但我只得到无意义的 returns(可能是我造成的)。我想通过 r 中的这个系统调用 运行 一个大列表(1000 多个文件),由 list.files()

获得

我只能找到有关 R 中变量并行编程的信息,但找不到系统调用的信息。有人有什么想法吗?谢谢!

使用变量还是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 并行)。

在 Windows 我使用这个解决方案的修改(投票最高的一个)来 运行 许多命令同时不超过 4 或 8 个:

Parallel execution of shell processes

这不是 R 解决方案,但我喜欢它。