import multiprocessing import logging as log EMPTY=0 BLACK=1 WHITE=-1 colorNames={BLACK:"B",WHITE:"W"} class MsgQueue: def __init__(self,handler=None): self._queue=multiprocessing.Queue() self._event=multiprocessing.Event() self._handleEvent=handler def send(self,actionName,args=tuple(),kwargs=None): if kwargs is None: kwargs=dict() self._queue.put((actionName,args,kwargs)) self._event.set() def listen(self,handleEvent=None): if handleEvent is not None: self._handleEvent=handleEvent while True: self._event.wait() msg=self._queue.get() if self._queue.empty(): self._event.clear() log.info(msg) if msg[0]=="!kill": break self._handleEvent(msg) def setHandler(self,handler): self._handleEvent=handler