diff options
| author | Angelos Evripiotis <jevripiotis@bloomberg.net> | 2019-04-02 13:29:49 +0100 |
|---|---|---|
| committer | Angelos Evripiotis <jevripiotis@bloomberg.net> | 2019-05-23 15:49:09 +0100 |
| commit | 82efed60fcb3d4f9227c3de3bf1649aa8d78a4ab (patch) | |
| tree | e7e24954475dc6d8b6bf5abb1abb231810f93f79 | |
| parent | e6d1043e2cb991df6414d6564c5dac69715583d2 (diff) | |
| download | buildstream-82efed60fcb3d4f9227c3de3bf1649aa8d78a4ab.tar.gz | |
WIP: spawn: use multiprocessing.Manager
Note that the queue changes went into 4d0a2d60c6ac01695b39871002d990646c6fc327
for pickling Job, ElementJob, etc.
| -rw-r--r-- | src/buildstream/_scheduler/jobs/job.py | 21 | ||||
| -rw-r--r-- | src/buildstream/_scheduler/scheduler.py | 4 |
2 files changed, 16 insertions, 9 deletions
diff --git a/src/buildstream/_scheduler/jobs/job.py b/src/buildstream/_scheduler/jobs/job.py index 6b6f45be6..c15ce0484 100644 --- a/src/buildstream/_scheduler/jobs/job.py +++ b/src/buildstream/_scheduler/jobs/job.py @@ -121,7 +121,7 @@ class Job(): # def spawn(self): - self._queue = multiprocessing.Queue() + self._queue = self._scheduler.manager.Queue() self._tries += 1 self._parent_start_listening() @@ -490,19 +490,22 @@ class Job(): # # http://bugs.python.org/issue3831 # - if not self._listening: - self._scheduler.loop.add_reader( - self._queue._reader.fileno(), self._parent_recv) - self._listening = True + + # if not self._listening: + # self._scheduler.loop.add_reader( + # self._queue._reader.fileno(), self._parent_recv) + # self._listening = True + pass # _parent_stop_listening() # # Stops listening on the message queue # def _parent_stop_listening(self): - if self._listening: - self._scheduler.loop.remove_reader(self._queue._reader.fileno()) - self._listening = False + # if self._listening: + # self._scheduler.loop.remove_reader(self._queue._reader.fileno()) + # self._listening = False + pass class ChildJob(): @@ -732,7 +735,7 @@ class ChildJob(): # exit_code (int): The exit code to exit with # def _child_shutdown(self, exit_code): - self._queue.close() + # self._queue.close() sys.exit(exit_code) # _child_message_handler() diff --git a/src/buildstream/_scheduler/scheduler.py b/src/buildstream/_scheduler/scheduler.py index 50ad7f07a..12acdd515 100644 --- a/src/buildstream/_scheduler/scheduler.py +++ b/src/buildstream/_scheduler/scheduler.py @@ -75,6 +75,10 @@ class Scheduler(): job_start_callback=None, job_complete_callback=None): + import multiprocessing + multiprocessing.set_start_method('spawn') + self.manager = multiprocessing.Manager() + # # Public members # |
