1

我想读入一些 CSV 文件(~50),运行一些操作,然后write.csv()用来输出一个主文件。由于 CSV 文件较大(~80 Mb),我想知道打开两个 R 实例是否更有效,在一个实例上读取一半的 CSV,在另一个实例上读取一半。然后我会将每个写入一个大的 CSV,读入两个 CSV,并将它们组合成一个主 CSV。有谁知道运行两个 R 实例是否会缩短读取所有 csv 所需的时间?

我正在使用具有 4Gb RAM 的 Macbook Pro OSX 10.6。

4

2 回答 2

2

如果您的大部分代码执行时间都花在读取文件上,那么它可能会更慢,因为两个 R 进程将竞争磁盘 I/O。但如果大部分时间都花在“运行多个操作”上,它会更快。

于 2013-07-18T17:22:44.793 回答
1

read.table() 和相关的可能会很慢。判断您是否可以从并行化中受益的最佳方法是为您的 R 脚本计时,以及对文件的基本阅读。例如,在终端中:

time cat *.csv > /dev/null

如果“cat”时间显着降低,则您的问题不受 I/O 限制,您可以并行化。在这种情况下,您可能应该使用并行包,例如

library(parallel)
csv_files <- c(.....)
my_tables <- mclapply(csv_files, read.csv)
于 2013-07-18T17:54:28.123 回答