map

LocalMapdlPool.map(func, iterable=None, progress_bar=True, close_when_finished=False, timeout=None, wait=True)

Run a function for each instance of mapdl within the pool

Parameters
  • func (function) – User function with an instance of mapdl as the first argument. The remaining arguments should match the number of items in each iterable (if any).

  • iterable (list, tuple, optional) – An iterable containing a set of arguments for func. If None, will run func once for each instance of mapdl.

  • progress_bar (bool, optional) – Show a progress bar when running the batch. Defaults to True.

  • close_when_finished (bool, optional) – Exit the MAPDL instances when the pool is finished. Default False.

  • timeout (float, optional) – Maximum runtime in seconds for each iteration. If None, no timeout. If specified, each iteration will be only allowed to run timeout seconds, and then killed and treated as a failure.

  • wait (bool, optional) – Block execution until the batch is complete. Default True.

Returns

output (list) – A list containing the return values for func. Failed runs will not return an output. Since the returns are not necessarily in the same order as iterable, you may want to add some sort of tracker to the return of your user function``func``.

Examples

Run several input files while storing the final routine. Note how the user function to be mapped must use mapdl as the first argument. The function can have any number of additional arguments.

>>> completed_indices = []
>>> def func(mapdl, input_file, index):
        # input_file, index = args
        mapdl.clear()
        output = mapdl.input(input_file)
        completed_indices.append(index)
        return mapdl.parameters.routine
>>> inputs = [(examples.vmfiles['vm%d' % i], i) for i in range(1, 10)]
>>> output = pool.map(func, inputs, progress_bar=True, wait=True)
['Begin level',
 'Begin level',
 'Begin level',
 'Begin level',
 'Begin level',
 'Begin level',
 'Begin level',
 'Begin level',
 'Begin level']