Skip to content

module launcher

solverpy.task.launcher

run(tasks: list[Task], cores: int = 4, chunksize: int = 1) -> Any

Launch tasks in parallel on multiple cores and return results.

:param tasks: list of task to be executed (instances of Task) :param cores: number of worker threads (Default value = 4) :param chunksize: chunksize for Pool.map_async (Default value = 1)

Source code in src/solverpy/task/launcher.py
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
def run(
   tasks: list["Task"],
   cores: int = 4,
   chunksize: int = 1,
) -> Any:
   """Launch `tasks` in parallel on multiple cores and return results.

   :param tasks:  list of task to be executed (instances of Task)
   :param cores:  number of worker threads (Default value = 4)
   :param chunksize:  chunksize for Pool.map_async (Default value = 1)
   """
   pool = mp.get_context("spawn").Pool(cores)
   try:
      runner = pool.map_async(runtask_single, tasks, chunksize=chunksize)
      results = runner.get(WAIT)
      pool.close()
      pool.join()
      return results
   except (Exception, KeyboardInterrupt):
      pool.terminate()
      raise