Browse Source

!451 use forkserver multiprocess context to avoid forking child process with locked stream resource(eg stdout)

Merge pull request !451 from wenkai/wk5_fix_log_stream_flush_stuck
tags/v0.6.0-beta
mindspore-ci-bot Gitee 5 years ago
parent
commit
51024d3b6e
1 changed files with 5 additions and 1 deletions
  1. +5
    -1
      mindinsight/utils/computing_resource_mgr.py

+ 5
- 1
mindinsight/utils/computing_resource_mgr.py View File

@@ -16,6 +16,7 @@
import fractions import fractions
import math import math
import threading import threading
import multiprocessing
from concurrent import futures from concurrent import futures


from mindinsight.utils.log import utils_logger as logger from mindinsight.utils.log import utils_logger as logger
@@ -23,6 +24,9 @@ from mindinsight.utils.constant import GeneralErrors
from mindinsight.utils.exceptions import MindInsightException from mindinsight.utils.exceptions import MindInsightException




_MP_CONTEXT = multiprocessing.get_context(method="forkserver")


class ComputingResourceManager: class ComputingResourceManager:
""" """
Manager for computing resources. Manager for computing resources.
@@ -44,7 +48,7 @@ class ComputingResourceManager:
for ind in range(self._executors_cnt) for ind in range(self._executors_cnt)
} }
self._remaining_executors = len(self._executors) self._remaining_executors = len(self._executors)
self._backend = futures.ProcessPoolExecutor(max_workers=max_processes_cnt)
self._backend = futures.ProcessPoolExecutor(max_workers=max_processes_cnt, mp_context=_MP_CONTEXT)
logger.info("Initialized ComputingResourceManager with executors_cnt=%s, max_processes_cnt=%s.", logger.info("Initialized ComputingResourceManager with executors_cnt=%s, max_processes_cnt=%s.",
executors_cnt, max_processes_cnt) executors_cnt, max_processes_cnt)




Loading…
Cancel
Save