parallel_execution module¶
Parallel execution of disciplines and functions using multiprocessing¶
-
class
gemseo.core.parallel_execution.
DiscParallelExecution
(worker_list, n_processes=2, use_threading=False, wait_time_between_fork=0)[source]¶ Bases:
gemseo.core.parallel_execution.ParallelExecution
Execute disciplines in parallel.
Constructor.
- Parameters
worker_list – list of objects that perform the tasks
n_processes – maximum number of processors on which to run
use_threading – if True, use Threads instead of processes to parallelize the execution multiprocessing will copy (serialize) all the disciplines, while threading will share all the memory This is important to note if you want to execute the same discipline multiple times, you shall use multiprocessing
wait_time_between_fork – time waited between two forks of the process /Thread
-
class
gemseo.core.parallel_execution.
DiscParallelLinearization
(worker_list, n_processes=2, use_threading=False, wait_time_between_fork=0)[source]¶ Bases:
gemseo.core.parallel_execution.ParallelExecution
Linearize disciplines in parallel.
Constructor.
- Parameters
worker_list – list of objects that perform the tasks
n_processes – maximum number of processors on which to run
use_threading – if True, use Threads instead of processes to parallelize the execution multiprocessing will copy (serialize) all the disciplines, while threading will share all the memory This is important to note if you want to execute the same discipline multiple times, you shall use multiprocessing
wait_time_between_fork – time waited between two forks of the process /Thread
-
class
gemseo.core.parallel_execution.
ParallelExecution
(worker_list, n_processes=2, use_threading=False, wait_time_between_fork=0)[source]¶ Bases:
object
Perform a parallel execution of tasks on input values.
Input values must be a list of independent pointers.
Constructor.
- Parameters
worker_list – list of objects that perform the tasks
n_processes – maximum number of processors on which to run
use_threading – if True, use Threads instead of processes to parallelize the execution multiprocessing will copy (serialize) all the disciplines, while threading will share all the memory This is important to note if you want to execute the same discipline multiple times, you shall use multiprocessing
wait_time_between_fork – time waited between two forks of the process /Thread
-
N_CPUS
= 2¶
-
execute
(input_data_list, exec_callback=None, task_submitted_callback=None)[source]¶ Execute all processes.
- Parameters
inputs – the input values (list or values)
exec_callback – callback function called with the pair (index, outputs) as arguments when an item is retrieved from the processing, where index is the associated index in input_data_list, of the input used to compute the outputs
task_submitted_callback – callback function called when all the tasks are submitted, but not yet done