Sim

Paralelo

El bloque Paralelo es un bloque contenedor en Sim que permite ejecutar múltiples instancias de bloques simultáneamente para un procesamiento más rápido del flujo de trabajo.

El bloque Paralelo admite dos tipos de ejecución concurrente:

Los bloques Paralelos son nodos contenedores que ejecutan su contenido múltiples veces simultáneamente, a diferencia de los bucles que ejecutan secuencialmente.

Descripción general

El bloque Paralelo te permite:

Distribuir trabajo: Procesar múltiples elementos concurrentemente

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

Manejar operaciones masivas: Procesar grandes conjuntos de datos eficientemente

Agregar resultados: Recopilar 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:

Ejecución paralela basada en conteo

Usa esto cuando necesites ejecutar la misma operación múltiples veces concurrentemente.

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:

Ejecución paralela basada en colección

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 paralelos

Creación de 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 un solo bloque dentro del contenedor paralelo
  4. Conecta el bloque según sea necesario

Acceso a los resultados

Después de que un bloque paralelo se complete, puedes acceder a los resultados agregados:

  • <parallel.results>: Array de resultados de todas las instancias paralelas

Ejemplos de casos de uso

Procesamiento de API por lotes

Escenario: Procesar múltiples llamadas API simultáneamente

  1. Bloque paralelo con colección de endpoints API
  2. Dentro del paralelo: El bloque API llama a cada endpoint
  3. Después del paralelo: Procesar todas las respuestas juntas

Procesamiento de IA con múltiples modelos

Escenario: Obtener respuestas de múltiples modelos de IA

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

Características 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 = input.parallel.results;
// Returns: [result1, result2, result3, ...]

Aislamiento de instancias

Cada instancia paralela se ejecuta independientemente:

  • Ámbitos de variables separados
  • Sin estado compartido entre instancias
  • Los fallos en una instancia no afectan a las demás

Limitaciones

Los bloques contenedores (Bucles y Paralelos) no pueden anidarse unos dentro de otros. 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

Los bloques paralelos solo pueden contener un único bloque. No puedes tener múltiples bloques conectados entre sí dentro de un paralelo - en ese caso, solo se ejecutaría el primer bloque.

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

  • Los límites de tasa de las API al realizar solicitudes concurrentes
  • El uso de memoria con conjuntos de datos grandes
  • Máximo de 20 instancias concurrentes para evitar el agotamiento de recursos

Paralelo vs Bucle

Entendiendo cuándo usar cada uno:

CaracterísticaParaleloBucle
EjecuciónConcurrenteSecuencial
VelocidadMás rápido para operaciones independientesMás lento pero ordenado
OrdenSin orden garantizadoMantiene el orden
Caso de usoOperaciones independientesOperaciones dependientes
Uso de recursosMayorMenor

Entradas y Salidas

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

  • Count: Número de instancias a ejecutar (basado en conteo)

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

  • parallel.currentItem: Elemento para esta instancia

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

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

  • parallel.results: Array de todos los resultados de instancias

  • Access: Disponible en bloques después del paralelo

Mejores prácticas

  • Solo operaciones independientes: Asegúrate de que las operaciones no dependan entre sí
  • Manejo de límites de tasa: Añade retrasos o limitaciones para flujos de trabajo con uso intensivo de API
  • Manejo de errores: Cada instancia debe manejar sus propios errores correctamente
Paralelo