derivkit.utils.concurrency module

Concurrency management for derivative computations.

derivkit.utils.concurrency.parallel_execute(worker: Callable[[...], Any], arg_tuples: Sequence[Tuple[Any, ...]], *, outer_workers: int = 1, inner_workers: int | None = None) list[Any]

Run worker(*args) for each tuple in arg_tuples with outer threads.

Inner worker setting is applied to the context, so calls inside worker will see the resolved inner worker count.

derivkit.utils.concurrency.resolve_inner_from_outer(w_params: int) int | None

Resolves the number of inner derivative workers based on outer workers and defaults.

Parameters:

w_params – Number of outer derivative workers.

Returns:

Number of inner derivative workers, or None for automatic policy.

derivkit.utils.concurrency.set_default_inner_derivative_workers(n: int | None) None

Sets the module-wide default for inner derivative workers.

Parameters:

n – Number of inner derivative workers, or None for automatic policy.

Returns:

None

derivkit.utils.concurrency.set_inner_derivative_workers(n: int | None) Iterator[int | None]

Temporarily set the number of inner derivative workers.

Parameters:

n – Number of inner derivative workers, or None for automatic policy.

Yields:

int | None – The previous worker setting (restored on exit).