Loops & Parallel
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.