Loops & Parallel

WorkflowsLoops & Parallel
Zoen

Repetir os mesmos passos em uma coleção inteira é uma das ideias mais fundamentais da programação. O Zoen oferece dois blocos para isso: o bloco Loop e o bloco Parallel. Eles fazem o mesmo trabalho e diferem só em como rodam.

What you will learn

Um container sobre uma coleção

Coloque blocos dentro de um Loop ou Parallel e passe a ele uma coleção; ele roda esses blocos uma vez para cada item.

Loop roda um por vez

O bloco Loop itera sequencialmente, item a item em ordem, quando cada passo pode depender do anterior.

Parallel roda tudo de uma vez

O bloco Parallel roda todos os itens ao mesmo tempo, bem mais rápido quando os itens são independentes.

Um bloco que contém blocos

Um Loop (ou Parallel) é um container, um bloco dentro do qual você coloca outros blocos. Você passa a ele uma coleção, e ele roda o que estiver dentro uma vez para cada item dessa coleção, transformando um único passo em muitos.

Aqui está a forma: um container envolvendo os blocos que repete sobre a coleção:

O que cada execução sabe

Dentro do container, cada iteração recebe o item atual para trabalhar (e seu índice). É assim que uma faixa de blocos vira uma execução por lead, por linha ou por arquivo: os passos ficam iguais, os dados mudam a cada passagem.

Um por vez, ou todos de uma vez

Essa é toda a diferença entre os dois blocos:

  • Loop roda os itens sequencialmente, um termina antes do próximo começar. Use quando cada passo se apoia no anterior, ou quando você precisa respeitar ordem ou rate limits.
  • Parallel os roda todos de uma vez, cada item ao mesmo tempo. Use quando os itens são independentes; é dramaticamente mais rápido em uma coleção grande.

Trocando o container

Como os dois blocos compartilham a mesma forma, você pode trocar um Loop por um Parallel (ou o contrário) sem religar nada por dentro. A mesma lógica, execução diferente — sequencial ou concorrente — escolhida pelo container em que você a envolve.

Common Questions

Ambos repetem os blocos dentro deles sobre uma coleção. O Loop roda um item por vez em ordem; o bloco Parallel roda todos os itens de uma vez. Os resultados se coletam da mesma forma nos dois.
Por meio das referências do container, como a tag do item atual: cada passagem vê o seu próprio item, e os blocos seguintes leem os resultados coletados quando o container termina.
Quando as passagens dependem umas das outras, quando a ordem importa, ou quando você quer controlar o ritmo de chamadas a um serviço externo. Prefira Parallel quando os itens são independentes e a velocidade importa.

Documentação relacionada