簡體   English   中英

R對文件的並行系統調用

[英]R parallel system call on files

我必須轉換大量RAW圖像,並且正在使用程序DCRAW來執行該操作。 由於此程序僅使用一個內核,因此我想在R中並行化它。要調用此函數,請使用:

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

這導致在與NEF文件相同的文件夾中輸出名為image.tiff的文件,這完全可以。 現在,我嘗試了多個R程序包對此進行並行化處理,但是我只能得到毫無意義的回報(可能是由我造成的)。 我想通過list.files()獲得的r中的此系統調用運行一個大列表(1000多個文件)

我只能找到有關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個命令的方式運行許多命令:

外殼程序的並行執行

它不是R解決方案,但我喜歡它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM