Parallel Diamonds#

This example showcases how one can schedule a diamond structure with parallel processing through Hera

from hera import Task, Workflow


def say(message: str):
    print(message)


with Workflow("parallel-diamonds") as w:
    (
        Task(
            "a",
            say,
            [{"message": "This is task A.1!"}, {"message": "This is task A.2!"}, {"message": "This is task A.3!"}],
        )
        >> Task(
            "b",
            say,
            [{"message": "This is task B.1!"}, {"message": "This is task B.2!"}, {"message": "This is task B.3!"}],
        )
        >> Task(
            "c",
            say,
            [{"message": "This is task C.1!"}, {"message": "This is task C.2!"}, {"message": "This is task C.3!"}],
        )
        >> Task(
            "d",
            say,
            [{"message": "This is task D.1!"}, {"message": "This is task D.2!"}, {"message": "This is task D.3!"}],
        )
    )

w.create()