diff --git a/taipy/core/_orchestrator/_dispatcher/_standalone_job_dispatcher.py b/taipy/core/_orchestrator/_dispatcher/_standalone_job_dispatcher.py index 849f9b5901..c5143030f1 100644 --- a/taipy/core/_orchestrator/_dispatcher/_standalone_job_dispatcher.py +++ b/taipy/core/_orchestrator/_dispatcher/_standalone_job_dispatcher.py @@ -9,6 +9,7 @@ # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the # specific language governing permissions and limitations under the License. +import multiprocessing as mp from concurrent.futures import Executor, ProcessPoolExecutor from functools import partial from threading import Lock @@ -33,9 +34,8 @@ def __init__(self, orchestrator: _AbstractOrchestrator, subproc_initializer: Opt super().__init__(orchestrator) max_workers = Config.job_config.max_nb_of_workers or self._DEFAULT_MAX_NB_OF_WORKERS self._executor: Executor = ProcessPoolExecutor( - max_workers=max_workers, - initializer=subproc_initializer, - ) # type: ignore + max_workers=max_workers, initializer=subproc_initializer, mp_context=mp.get_context("spawn") + ) self._nb_available_workers = self._executor._max_workers # type: ignore def _can_execute(self) -> bool: