我知道Scala中的并行集合。他们很方便!但是,我想遍历一个文件的行,该文件对于并行内存太大。例如,我可以创建线程并在“扫描程序”上设置锁,但是如果我可以运行以下代码,那就太好了:
Source.fromFile(path).getLines.par foreach { line =>
不幸的是
error: value par is not a member of Iterator[String]
在这里完成某种并行性的最简单方法是什么?现在,我将阅读一些内容并进行并行处理。
最佳答案
您可以使用分组轻松地将迭代器切成块,然后将块加载到内存中,然后进行并行处理。
val chunkSize = 128 * 1024
val iterator = Source.fromFile(path).getLines.grouped(chunkSize)
iterator.foreach { lines =>
lines.par.foreach { line => process(line) }
}
我认为,这样的事情是最简单的方法。
关于scala - 并行遍历文件中的行(Scala)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6751463/