mirror of
https://github.com/clearml/clearml
synced 2025-02-02 01:54:23 +00:00
Fix avoid using Process object for forking
Fix lost semaphores
This commit is contained in:
parent
2cc4eff004
commit
7b5c676ab2
@ -515,9 +515,11 @@ class BackgroundMonitor(object):
|
|||||||
|
|
||||||
def _daemon(self):
|
def _daemon(self):
|
||||||
self._start_ev.set()
|
self._start_ev.set()
|
||||||
self.daemon()
|
try:
|
||||||
self.post_execution()
|
self.daemon()
|
||||||
self._thread = False
|
finally:
|
||||||
|
self.post_execution()
|
||||||
|
self._thread = False
|
||||||
|
|
||||||
def post_execution(self):
|
def post_execution(self):
|
||||||
self._done_ev.set()
|
self._done_ev.set()
|
||||||
@ -553,11 +555,13 @@ class BackgroundMonitor(object):
|
|||||||
for d in BackgroundMonitor._instances.get(id(task.id), []):
|
for d in BackgroundMonitor._instances.get(id(task.id), []):
|
||||||
d.set_subprocess_mode()
|
d.set_subprocess_mode()
|
||||||
|
|
||||||
# todo: solve for standalone spawn subprocess
|
# ToDo: solve for standalone spawn subprocess
|
||||||
if ForkContext is not None and isinstance(get_context(), ForkContext):
|
# prefer os.fork, because multipprocessing.Process add atexit callback, which might later be invalid.
|
||||||
cls.__start_subprocess_forkprocess(task_obj_id=id(task.id))
|
cls.__start_subprocess_os_fork(task_obj_id=id(task.id))
|
||||||
else:
|
# if ForkContext is not None and isinstance(get_context(), ForkContext):
|
||||||
cls.__start_subprocess_os_fork(task_obj_id=id(task.id))
|
# cls.__start_subprocess_forkprocess(task_obj_id=id(task.id))
|
||||||
|
# else:
|
||||||
|
# cls.__start_subprocess_os_fork(task_obj_id=id(task.id))
|
||||||
|
|
||||||
# wait until subprocess is up
|
# wait until subprocess is up
|
||||||
if wait_for_subprocess:
|
if wait_for_subprocess:
|
||||||
|
Loading…
Reference in New Issue
Block a user