#encoding = utf8 import logging import time from abc import ABC, abstractmethod from queue import Queue from threading import Event, Thread from utils import SyncQueue logger = logging.getLogger(__name__) class BaseRender(ABC): def __init__(self, play_clock, context, type_, delay=0.02, thread_name="BaseRenderThread"): self._play_clock = play_clock self._context = context self._type = type_ self._delay = delay # self._queue = SyncQueue(context.batch_size, f'{type_}RenderQueue') # self._exit_event = Event() # self._thread = Thread(target=self._on_run, name=thread_name) # self._exit_event.set() # self._thread.start() @abstractmethod def render(self, frame, ps): pass def _on_run(self): logging.info(f'{self._type} render run') # while self._exit_event.is_set(): # self._run_step() # time.sleep(self._delay) logging.info(f'{self._type} render exit') def put(self, frame, ps): pass # self._queue.put((frame, ps)) def size(self): pass # return self._queue.size() def pause_talk(self): pass # self._queue.clear() def stop(self): pass # self._queue.clear() # self._exit_event.clear() # self._thread.join() @abstractmethod def _run_step(self): pass