Worker moved into own module, cleaned up process termination
This commit is contained in:
@@ -130,6 +130,8 @@ class PyQt5Gui(GuiSkeleton):
|
|||||||
|
|
||||||
if state.target == TeardownEvent.WELCOME:
|
if state.target == TeardownEvent.WELCOME:
|
||||||
self._comm.send(Workers.MASTER, GuiEvent('welcome'))
|
self._comm.send(Workers.MASTER, GuiEvent('welcome'))
|
||||||
|
elif state.target in (TeardownEvent.EXIT, TeardownEvent.RESTART):
|
||||||
|
self._app.exit(0)
|
||||||
|
|
||||||
def showError(self, state):
|
def showError(self, state):
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ from .Config import Config
|
|||||||
from .util import lookup_and_import
|
from .util import lookup_and_import
|
||||||
from .StateMachine import Context, ErrorEvent
|
from .StateMachine import Context, ErrorEvent
|
||||||
from .Threading import Communicator, Workers
|
from .Threading import Communicator, Workers
|
||||||
from .Worker import Worker
|
from .worker import Worker
|
||||||
|
|
||||||
|
|
||||||
class CameraProcess(mp.Process):
|
class CameraProcess(mp.Process):
|
||||||
@@ -107,16 +107,11 @@ def run(argv):
|
|||||||
comm = Communicator()
|
comm = Communicator()
|
||||||
context = Context(comm)
|
context = Context(comm)
|
||||||
|
|
||||||
# Create communication objects:
|
# Initialize processes: We use four processes here:
|
||||||
# 1. We use a pipe to connect GUI and camera process
|
|
||||||
# 2. We use a queue to feed tasks to the postprocessing process
|
|
||||||
# gui_conn, camera_conn = mp.Pipe()
|
|
||||||
# worker_queue = mp.SimpleQueue()
|
|
||||||
|
|
||||||
# Initialize processes: We use three processes here:
|
|
||||||
# 1. Camera processing
|
# 1. Camera processing
|
||||||
# 2. Postprocessing
|
# 2. Postprocessing
|
||||||
# 3. GUI
|
# 3. GUI
|
||||||
|
# 4. Master
|
||||||
camera_proc = CameraProcess(config, comm) # camera_conn, worker_queue)
|
camera_proc = CameraProcess(config, comm) # camera_conn, worker_queue)
|
||||||
camera_proc.start()
|
camera_proc.start()
|
||||||
|
|
||||||
@@ -131,15 +126,12 @@ def run(argv):
|
|||||||
if exit_code in (0, 123):
|
if exit_code in (0, 123):
|
||||||
break
|
break
|
||||||
|
|
||||||
# Close endpoints
|
|
||||||
# gui_conn.close()
|
|
||||||
# camera_conn.close()
|
|
||||||
|
|
||||||
# Wait for processes to finish
|
# Wait for processes to finish
|
||||||
gui_proc.join()
|
gui_proc.join()
|
||||||
# worker_queue.put('teardown')
|
|
||||||
worker_proc.join()
|
worker_proc.join()
|
||||||
camera_proc.join(1)
|
camera_proc.join()
|
||||||
|
logging.debug('All processes joined, returning code {}'. format(exit_code))
|
||||||
|
|
||||||
return exit_code
|
return exit_code
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -23,8 +23,8 @@ import os.path
|
|||||||
from time import localtime, strftime
|
from time import localtime, strftime
|
||||||
|
|
||||||
from .PictureList import PictureList
|
from .PictureList import PictureList
|
||||||
from . import StateMachine
|
from .. import StateMachine
|
||||||
from .Threading import Workers
|
from ..Threading import Workers
|
||||||
|
|
||||||
|
|
||||||
class WorkerTask:
|
class WorkerTask:
|
||||||
Reference in New Issue
Block a user