Mic*_*ael 1 parallel-processing scala file
这是我上一个问题的后续行动.
假设我并行处理我的文件.现在我想将处理结果写入文件.由于结果不适合内存,我不能等到所有文件的处理完成然后写结果.我必须以某种方式并行处理和写入.
例如:假设我有带数字的文件.文件大小约500M
.文件数量大约是200
.每个文件都适合内存,但所有文件都不适合.现在我想将这些文件中找到的所有偶数写入另一个文件.
如何在Scala中使用(Futures
和Scala parallel collections
)?
在某些时候,你必须同步写作.如果您不想阻止其他线程,则可以使用actor将结果写入文件.这看起来像这样:
class FileWriterActor(path: String) extends Actor {
val file = ... // init FileWriter
// this is how you implement an akka actor
// plain scala actors look a bit different
def receive = {
case x: MyResult => file.write(x.toString)
}
override def postStop() = file.close()
}
// usage
val result = ... // calculation stuff
fileWriter ! result
Run Code Online (Sandbox Code Playgroud)