Paralelo

Ejecutar bloques hijos simultáneamente dentro de un contenedor

El bloque Paralelo es un bloque contenedor en TradingGoose que ejecuta bloques hijos simultáneamente.

Los bloques Paralelo son nodos contenedores. Arrastra bloques hijos dentro del paralelo en el lienzo. Las aristas entrantes entran a través de Inicio Paralelo, y las salidas de los hijos se reconectan a Fin Paralelo antes de que el flujo de trabajo continúe fuera del contenedor.

Descripción general

El bloque Paralelo te permite:

Distribuir trabajo: Procesa múltiples elementos simultáneamente

Acelerar la ejecución: Ejecuta operaciones independientes simultáneamente

Manejar operaciones masivas: Procesa grandes conjuntos de datos de manera eficiente

Agregar resultados: Recopila las salidas de todas las ejecuciones paralelas

Opciones de configuración

Tipo de paralelo

Elige entre dos tipos de ejecución paralela:

Paralelo basado en conteo - Ejecuta un número fijo de instancias paralelas.

Úsalo cuando necesites ejecutar la misma operación varias veces simultáneamente.

Example: Run 5 parallel instances
- Instance 1 ┐
- Instance 2 ├─ All execute simultaneously
- Instance 3 │
- Instance 4 │
- Instance 5 ┘

Paralelo basado en colección - Distribuye una colección entre instancias paralelas.

Cada instancia procesa un elemento de la colección simultáneamente.

Example: Process ["task1", "task2", "task3"] in parallel
- Instance 1: Process "task1" ┐
- Instance 2: Process "task2" ├─ All execute simultaneously
- Instance 3: Process "task3" ┘

Cómo usar bloques Paralelo

Crear un bloque Paralelo

  1. Arrastra un bloque Paralelo desde la barra de herramientas a tu lienzo
  2. Configura el tipo de paralelo y los parámetros
  3. Arrastra los bloques hijos que deberían ejecutarse en paralelo dentro del contenedor
  4. Conecta el flujo entrante a Inicio Paralelo, y conecta las salidas de los hijos de vuelta a Fin Paralelo antes de continuar fuera del contenedor

Acceder a los resultados

Cuando un bloque paralelo finaliza, selecciona su salida results en el menú de referencias. Sustituye parallel-id por el ID real del contenedor:

  • <parallel-id.results>: arreglo de resultados de todas las instancias paralelas, ordenado por índice de instancia

Casos de uso de ejemplo

Procesamiento por lotes de API

Escenario: procesar varias llamadas a la API de forma simultánea

  1. Bloque paralelo con una colección de endpoints de API
  2. Dentro del paralelo: el bloque de API llama a cada endpoint
  3. Después del paralelo: procesa todas las respuestas en conjunto

Procesamiento con varios modelos de IA

Escenario: obtener respuestas de varios modelos de IA

  1. Paralelo basado en colección sobre una lista de ID de modelos (p. ej., ["gpt-4o", "claude-3.7-sonnet", "gemini-2.5-pro"])
  2. Dentro del paralelo: el modelo del agente se establece en el elemento actual de la colección
  3. Después del paralelo: compara y selecciona la mejor respuesta

Funciones avanzadas

Agregación de resultados

Los resultados de todas las instancias paralelas se recopilan automáticamente:

// In a Function block after the parallel
const allResults = <parallel-id.results>;
return allResults;

Aislamiento de instancias

Las salidas de bloques y el elemento actual se registran por instancia, pero las variables del flujo de trabajo se comparten. Las escrituras simultáneas pueden entrar en conflicto; devuelve salidas por elemento y agrégalas después del bloque Parallel.

Los errores de bloque no gestionados pueden hacer fallar la ejecución; el paralelismo no garantiza aislamiento de errores. Conecta rutas de error dentro del contenedor cuando necesites recuperación.

Limitaciones

Los bloques contenedores (bucles y paralelos) no se pueden anidar entre sí. Esto significa:

  • No puedes colocar un bloque de bucle dentro de un bloque paralelo
  • No puedes colocar otro bloque paralelo dentro de un bloque paralelo
  • No puedes colocar ningún bloque contenedor dentro de otro bloque contenedor

Aunque la ejecución paralela es más rápida, ten en cuenta:

  • Los límites de frecuencia de la API al hacer solicitudes simultáneas
  • El uso de memoria con conjuntos de datos grandes
  • La ejecución por cantidad tiene un máximo de 20 instancias; la ejecución por colección crea una instancia por elemento y no usa ese límite. Divide las colecciones grandes en lotes.

Paralelo vs bucle

Cómo saber cuándo usar cada uno:

CaracterísticaParaleloBucle
EjecuciónConcurrenteSecuencial
VelocidadMás rápido para operaciones independientesMás lento pero ordenado
OrdenLa finalización varía; los resultados siguen el índiceMantiene el orden
Caso de usoOperaciones independientesOperaciones dependientes
Uso de recursosMayorMenor

Entradas y salidas

  • Tipo de paralelismo: Elige entre 'count' o 'collection'

  • Cantidad: Número de instancias que se ejecutarán (basado en count)

  • Colección: Array u objeto a distribuir (basado en colección)

  • parallel.currentItem: Elemento para esta instancia

  • parallel.index: Número de instancia (basado en 0)

  • parallel.items: Colección completa (basado en colección)

  • results: Array con los resultados de todas las instancias

  • Acceso: Disponible en bloques después del paralelo

Buenas prácticas

  • Solo operaciones independientes: Asegúrate de que las operaciones no dependan entre sí
  • Gestiona los límites de velocidad: Agrega retrasos o limitación de velocidad para flujos de trabajo con uso intensivo de API
  • Manejo de errores: Cada instancia debe gestionar sus propios errores de forma controlada