我必须转换大量的原始图像,并正在使用程序DCRAW这样做。由于这个程序只使用一个核心,所以我想在R中并行化它来调用这个函数,我使用:
system("dcraw.exe -4 -T image.NEF")这将导致在与NEF相同的文件夹中输出一个名为image.tiff的文件,这是完全正确的。现在,我尝试了多个R包并行化,但我只得到无意义的回报(可能是我造成的)。我希望在r中通过这个系统调用运行一个大列表(1000+文件),这是由list.files()获得的
我只能找到关于R内变量并行编程的信息,而不是系统调用的信息。有人有什么想法吗?谢谢!
发布于 2015-12-09 15:43:59
如果使用变量或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,而是用R
ls *.NEF | parallel -u -j8 'dcraw.exe -4 -T {}'相反(使用GNU并行)。
发布于 2015-12-09 16:39:19
在Windows上,我使用对此解决方案的修改(顶部投票)来运行多个命令,同时运行的命令不超过4或8:
Parallel execution of shell processes
这不是R解决方案,但我喜欢。
https://stackoverflow.com/questions/34181877
复制相似问题