Skip to content

Parallel

All tasks run simultaneously in separate processes. Each task executes independently without receiving context from other tasks.

Implementation

from time import sleep

from dotflow import DotFlow, action, Context


@action
def task_foo(initial_context: Context):
    sleep(2)
    value = initial_context.storage
    return value * value * value


@action
def task_bar(initial_context: Context):
    sleep(1)
    value = initial_context.storage
    return value * value * value


def main():
    workflow = DotFlow()

    workflow.task.add(step=task_foo, initial_context=10)
    workflow.task.add(step=task_bar, initial_context=10)

    workflow.start(mode="parallel")

    return workflow


if __name__ == "__main__":
    main()

Workflow

flowchart TD
    S[Start] -->|run| A[task_a]
    S[Start] -->|run| B[task_b]
    S[Start] -->|run| C[task_c]
    S[Start] -->|run| D[task_d]
    A --> H[Finish]
    B --> H[Finish]
    C --> H[Finish]
    D --> H[Finish]

References