Split & Gather
Branchez votre pipeline en flux indépendants, fusionnez-les après
`.split(fn, n=2)` route chaque item vers 0 à N branches selon la valeur retournée par `fn`. `.gather(*pipes)` fusionne N pipelines en un seul flux. Idéal pour traiter différentes catégories d'items avec des logiques distinctes.
python
from typing import Optional, Tuple
from olympipe import Pipeline
def route_by_type(item: dict) -> Tuple[Optional[dict], Optional[dict]]:
if item["type"] == "image":
return (item, None) # → branche images
return (None, item) # → branche textes
images, texts = Pipeline(mixed_dataset).split(route_by_type, n=2)
results = (
images.task(process_image, count=4) # pipeline images
.gather(texts.task(process_text, count=2)) # + pipeline textes
.wait_for_result()
)⚡ Performance
5 000 items mixtes, traitement différencié
Séquentiel unifié 15.0s
Split 2 branches 4.0s
🚀 3.8× plus rapide
Comment ça fonctionne
Chaque branche est un `Pipeline` indépendant avec sa propre file. `None` dans la valeur de retour signifie « ne pas envoyer sur cette branche ». `gather` crée un `GatherPipe` qui consomme N files en round-robin.
