ZIO взаимодействует с Cats при параллельных операциях
ZIO
не зависит от Cats
поэтому он имеет свои собственные методы для выполнения sequence
операции: ZIO.sequencePar
а также ZIO.sequence
,
Я пытался использовать sequence
обеспечено взаимодействие с Cats
и это работает так же, как ZIO.sequence
:
import zio._
import zio.interop.catz._
import cats.implicits._
val t1: Task[Int] = ???
val t2: Task[Int] = ???
val t3: Task[Int] = ???
val seq = List(t1,t2,t3).sequence // <-- t1,t2,t3 are executed sequentially
(new DefaultRuntime {}).unsafeRun(seq)
Могу я сделать ZIO
обращаться sequence
как ZIO.sequencePar
чтобы я мог запускать задачи параллельно?
Кажется, что ZIO
нужна некоторая реализация параллельной Traverse
за Cats
, но я не могу найти ни одного.
Вот мои зависимости:
libraryDependencies += "dev.zio" %% "zio" % "1.0.0-RC10-1"
libraryDependencies += "dev.zio" %% "zio-interop-cats" % "2.0.0.0-RC1"
Редактировать:
С помощью @AndreyTyukin я обнаружил, что для того, чтобы он работал параллельно, мне нужно запустить List(k,k2,k3).parSequence
которые используют экземпляр класса типов Parallel
доступно в zio-interop-cats
Lib. И комментарии @LuisMiguelMejíaSuárez к этому вопросу дают некоторое объяснение того, почему мы должны использовать Parallel
,