mirror of
https://github.com/chanzuckerberg/cellxgene.git
synced 2026-09-28 17:48:12 +08:00
gui multiprocess - experimental feature (#780)
This commit is contained in:
@@ -13,13 +13,55 @@ class WorkerSignals(QObject):
|
||||
Defines the signals available from a running worker thread.
|
||||
Supported signals are:
|
||||
finished
|
||||
ready
|
||||
error - `str` error message
|
||||
result - `object` data returned from processing, anything
|
||||
"""
|
||||
finished = Signal()
|
||||
engine_error = Signal(str)
|
||||
server_error = Signal(str)
|
||||
error = Signal(str)
|
||||
result = Signal(object)
|
||||
ready = Signal()
|
||||
|
||||
|
||||
class SiteReadySignals(QObject):
|
||||
"""
|
||||
Defines the signals available from a running worker thread.
|
||||
Supported signals are:
|
||||
timeout
|
||||
ready
|
||||
error - `str` error message
|
||||
"""
|
||||
ready = Signal()
|
||||
timeout = Signal()
|
||||
error = Signal(str)
|
||||
|
||||
|
||||
class FileLoadSignals(QObject):
|
||||
selectedFile = Signal(str)
|
||||
|
||||
|
||||
class Emitter:
|
||||
def __init__(self, transport, signals):
|
||||
self.transport = transport
|
||||
self.signals = signals()
|
||||
|
||||
def _emit(self, signature, args=None):
|
||||
if args is None:
|
||||
getattr(self.signals, signature).emit()
|
||||
else:
|
||||
getattr(self.signals, signature).emit(args)
|
||||
|
||||
def run(self):
|
||||
while True:
|
||||
try:
|
||||
signature = self.transport.recv()
|
||||
except EOFError:
|
||||
# Server done
|
||||
break
|
||||
except Exception as e:
|
||||
self.signals.error.emit(str(e))
|
||||
break
|
||||
else:
|
||||
self._emit(*signature)
|
||||
|
||||
Reference in New Issue
Block a user