首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对文件的并行系统调用

对文件的并行系统调用
EN

Stack Overflow用户
提问于 2015-12-09 14:54:28
回答 2查看 1.2K关注 0票数 2

我必须转换大量的原始图像,并正在使用程序DCRAW这样做。由于这个程序只使用一个核心,所以我想在R中并行化它来调用这个函数,我使用:

代码语言:javascript
复制
system("dcraw.exe -4 -T image.NEF")

这将导致在与NEF相同的文件夹中输出一个名为image.tiff的文件,这是完全正确的。现在,我尝试了多个R包并行化,但我只得到无意义的回报(可能是我造成的)。我希望在r中通过这个系统调用运行一个大列表(1000+文件),这是由list.files()获得的

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-09 15:43:59

如果使用变量或system并不重要。假设您不在Windows上(它不支持并行),那么您可以在任何正常的系统上运行

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

它将并行运行8个作业。但是你最好不要用R,而是用R

代码语言:javascript
复制
ls *.NEF | parallel -u -j8 'dcraw.exe -4 -T {}'

相反(使用GNU并行)。

票数 2
EN

Stack Overflow用户

发布于 2015-12-09 16:39:19

在Windows上,我使用对此解决方案的修改(顶部投票)来运行多个命令,同时运行的命令不超过4或8:

Parallel execution of shell processes

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34181877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档