You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何并行执行一组IO操作?附Cats Effect实现示例

使用Cats Effect并行执行IO操作

嘿,我来给你唠唠怎么用Cats Effect并行处理一组IO操作!核心其实就是用parMapN这个方法,它能帮我们把多个IO任务并行跑起来,不用挨个等前面的完成。

咱们直接看完整的示例代码:

def test: Unit = {
  val ioA = IO.shift *> IO(println("Running ioA"))
  val ioB = IO.shift *> IO(println("Running ioB"))
  val ioC = IO.shift *> IO(println("Running ioC"))

  val program: IO[Unit] = (ioA, ioB, ioC).parMapN { (_, _, _) => () }
  
  // 要实际运行的话,加上这句
  // program.unsafeRunSync()
}

我给你拆解下关键部分:

  • 每个IO任务(ioA/ioB/ioC)里的IO.shift是为了让任务切换到合适的线程池执行,保证并行的效率,避免阻塞主线程;
  • parMapN是Cats Effect提供的并行组合器,它会同时启动所有传入的IO操作,等所有任务都执行完成后,再把结果传给后面的匿名函数。这里我们不需要用到三个任务的返回值,所以直接返回()就行;
  • 如果要让这个程序真的跑起来,记得加上program.unsafeRunSync()(或者用unsafeRunAsync这类异步运行方式)。

这种方式特别适合处理IO密集型任务,比如同时调用多个API、读写多个文件,能大大压缩整体执行时间~

内容的提问来源于stack exchange,提问作者nam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:09:47