jztools.parallelization.utils#

Classes

ParArgs(*arg_seqs, **kwarg_seqs)

Defines parameters that need to be parallelized over. All arguments and keyword arguments are sequences of the same length. The n-th entry of all sequences contains the n-th set of args / kwargs. Lengths will be checked at initialization for sequences having __len__ or at run-time otherwise.

WorkerException(error)

Wraps an exception raised within a worker thread.

Exceptions

ParArgsExpandError

Raised when validation fails during expand.

ParArgsMisMatchError([msg])

Signals that ParArgs objects have different lengths.

class jztools.parallelization.utils.WorkerException(error)#

Bases: object

Wraps an exception raised within a worker thread. Wrapping the exception enables differentiating between exceptions raised by a funciton and exceptions returned by a function as part of normal operation.

class jztools.parallelization.utils.ParArgs(*arg_seqs: Iterable, **kwarg_seqs: Iterable)#

Bases: object

Defines parameters that need to be parallelized over. All arguments and keyword arguments are sequences of the same length. The n-th entry of all sequences contains the n-th set of args / kwargs. Lengths will be checked at initialization for sequences having __len__ or at run-time otherwise.

To comibne fixed and parallelized arguments, see expand()

Example:

# To denote arguments for the following calls:
# fxn(0, 'a', alpha=10, beta=50)
# fxn(1, 'b', alpha=20, beta=60)
# fxn(2, 'c', alpha=30, beta=70)
ParArgs([0,1,2], ['a', 'b', 'c'], alpha=[10, 20, 30], beta=[50, 60, 70])
Parameters:
  • arg_seqs – Argument sequences for positional arguments

  • kwarg_seqs – Argument sequences for keyword arguments.

classmethod expand(*args, **kwargs)#

Iterator producing arg/kwarg pairs given args or kwargs possibly containing ParArgs objects. Note that only the last ParArgs object can contain keyword arguments, and that ParArgs objects cannot be passed as keywords.

Example:

# To denote arguments for the following calls:
# fxn(0, 5, 'a', alpha=10, beta=50, gamma=100)
# fxn(1, 5, 'b', alpha=20, beta=60, gamma=100)
# fxn(2, 5, 'c', alpha=30, beta=70, gamma=100)
ParArgs.expand(
    ParArgs([0, 1, 2]),
    5,
    ParArgs(['a', 'b', 'c'], alpha=[10, 20, 30], beta=[50, 60, 70]),
    gamma=100)
exception jztools.parallelization.utils.ParArgsMisMatchError(msg='ParArgs objects have different argument set sizes.')#

Bases: Exception

Signals that ParArgs objects have different lengths.

exception jztools.parallelization.utils.ParArgsExpandError#

Bases: Exception

Raised when validation fails during expand.