scala - 并行遍历文件中的行(Scala)?

标签 scala concurrency parallel-processing

我知道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/

相关文章:

scala - Scala 中的 Futures 真的有用吗?

C pragma omp 并行

Scala 解析器组合器几乎是最后一个

java - Executors.newSingleThreadExecutor() 是运行我需要超时的任务的合适选择吗?

java - 运行在 Jenkins 下运行 JVM 的批处理文件时的堆大小

java - 同步对类字段的访问

java - Java除了并行流之外如何实现隐式并发

matlab - appdata 是否在并行池中的工作人员之间共享?

scala - 什么时候可以在Scala中使用“var”?

scala - scala 2.8 中从 String 到 Int 的隐式转换