class YoutubeQueryThread(Thread): def __init__(self, query, param, gotFeed, gotFeedError, callback, errorback): Thread.__init__(self) self.messagePump = ePythonMessagePump() self.messages = ThreadQueue() self.gotFeed = gotFeed self.gotFeedError = gotFeedError self.callback = callback self.errorback = errorback self.query = query self.param = param self.canceled = False self.messagePump.recv_msg.get().append(self.finished) def cancel(self): self.canceled = True def run(self): try: feed = self.query(self.param) self.messages.push((True, feed, self.callback)) self.messagePump.send(0) except Exception, ex: self.messages.push((False, ex, self.errorback)) self.messagePump.send(0)
def __init__(self, guid=None, **kwargs): """Initialise the service. If guid is not provided, one will be requested (returned in the callback). Pass callback= or error= to receive notification of readiness.""" ThreadQueue.__init__(self) self.guid = guid self.add_request(self._setup_client, **kwargs)
def __init__(self, callback): Thread.__init__(self) self.callback = callback self.__running = False self.__messages = ThreadQueue() self.__pump = ePythonMessagePump() try: self.__pump_recv_msg_conn = self.__pump.recv_msg.connect(self.gotThreadMsg) except: self.__pump.recv_msg.get().append(self.gotThreadMsg) self.__queue = ThreadQueue()
def doThreadQueue(): from ThreadQueue import ThreadQueue dqc = doQueueClass() tq = ThreadQueue(work_function=create_task_url, thread_work_function=dqc.work) while True: if tq.do_work(): if dqc.dowork(): break else: continue print 'end'
def testThreadQueue(): from ThreadQueue import ThreadQueue t_dict = {'a': '12', "b": '34'} t_dict = ('1', '2') tc = testClass(t_dict) tq = ThreadQueue(work_function=create_task, thread_work_function=tc.test) while True: if tq.do_work(): continue else: break print 'ok'
def doThreadQueueNew(max_num): from ThreadQueue import ThreadQueue dqc = doQueueClass() tq = ThreadQueue(work_function=create_iter, thread_work_function=dqc.newwork, max_exec_num=max_num) while True: if tq.do_work(): if dqc.dowork(): break else: continue else: break print 'end'
def stop(self): self.running = False self.__queue = ThreadQueue() try: self.__pump.recv_msg.get().remove(self.gotThreadMsg) except: pass self.__pump_recv_msg_conn = None
def __init__(self, query, param, callback, errorback): Thread.__init__(self) self.messagePump = ePythonMessagePump() self.messages = ThreadQueue() self.query = query self.param = param self.callback = callback self.errorback = errorback self.canceled = False self.messagePump.recv_msg.get().append(self.finished)
def __init__(self, query, param, gotFeed, gotFeedError, callback, errorback): Thread.__init__(self) self.messagePump = ePythonMessagePump() self.messages = ThreadQueue() self.gotFeed = gotFeed self.gotFeedError = gotFeedError self.callback = callback self.errorback = errorback self.query = query self.param = param self.canceled = False self.messagepPump_conn = self.messagePump.recv_msg.connect(self.finished)
class SuggestionsQueryThread(Thread): def __init__(self, query, param, callback, errorback): Thread.__init__(self) self.messagePump = ePythonMessagePump() self.messages = ThreadQueue() self.query = query self.param = param self.callback = callback self.errorback = errorback self.canceled = False self.messagePump.recv_msg.get().append(self.finished) def cancel(self): self.canceled = True def run(self): if self.param not in (None, ""): try: suggestions = self.query.getSuggestions(self.param) self.messages.push((suggestions, self.callback)) self.messagePump.send(0) except Exception, ex: self.messages.push((ex, self.errorback)) self.messagePump.send(0)
class YoutubeQueryThread(Thread): def __init__(self, query, param, gotFeed, gotFeedError, callback, errorback): Thread.__init__(self) self.messagePump = ePythonMessagePump() self.messages = ThreadQueue() self.gotFeed = gotFeed self.gotFeedError = gotFeedError self.callback = callback self.errorback = errorback self.query = query self.param = param self.canceled = False self.messagePump.recv_msg.get().append(self.finished) def cancel(self): self.canceled = True def run(self): try: if self.param is None: feed = self.query() else: feed = self.query(self.param) self.messages.push((True, feed, self.callback)) self.messagePump.send(0) except Exception as ex: self.messages.push((False, ex, self.errorback)) self.messagePump.send(0) def finished(self, val): if not self.canceled: message = self.messages.pop() if message[0]: self.gotFeed(message[1], message[2]) else: self.gotFeedError(message[1], message[2])
class SeriesPluginWorker(Thread): def __init__(self, callback): Thread.__init__(self) self.callback = callback self.__running = False self.__messages = ThreadQueue() self.__pump = ePythonMessagePump() try: self.__pump_recv_msg_conn = self.__pump.recv_msg.connect(self.gotThreadMsg) except: self.__pump.recv_msg.get().append(self.gotThreadMsg) self.__queue = ThreadQueue() def empty(self): return self.__queue.empty() def finished(self): return not self.__running def add(self, item): self.__queue.push(item) if not self.__running: self.__running = True self.start() # Start blocking code in Thread def gotThreadMsg(self, msg=None): data = self.__messages.pop() if callable(self.callback): self.callback(data) def stop(self): self.running = False self.__queue = ThreadQueue() try: self.__pump.recv_msg.get().remove(self.gotThreadMsg) except: pass self.__pump_recv_msg_conn = None def run(self): while not self.__queue.empty(): # NOTE: we have to check this here and not using the while to prevent the parser to be started on shutdown if not self.__running: break logDebug('Worker is processing') item = self.__queue.pop() result = None try: result = item.identifier.getEpisode( item.name, item.begin, item.end, item.service ) except Exception, e: logDebug("Worker: Exception:", str(e)) # Exception finish job with error result = str(e) config.plugins.seriesplugin.lookup_counter.value += 1 self.__messages.push( (item.callback, normalizeResult(result)) ) self.__pump.send(0) logDebug(' Worker: list is emty, done') Thread.__init__(self) self.__running = False
class SeriesPluginWorker(Thread): def __init__(self, callback): Thread.__init__(self) self.callback = callback self.__running = False self.__messages = ThreadQueue() self.__pump = ePythonMessagePump() try: self.__pump_recv_msg_conn = self.__pump.recv_msg.connect(self.gotThreadMsg) except: self.__pump.recv_msg.get().append(self.gotThreadMsg) self.__queue = ThreadQueue() def empty(self): return self.__queue.empty() def finished(self): return not self.__running def add(self, item): from ctypes import CDLL SYS_gettid = 4222 libc = CDLL("libc.so.6") tid = libc.syscall(SYS_gettid) splog('SP: Worker add from thread: ', currentThread(), _get_ident(), self.ident, os.getpid(), tid ) self.__queue.push(item) if not self.__running: self.__running = True self.start() # Start blocking code in Thread def gotThreadMsg(self, msg=None): from ctypes import CDLL SYS_gettid = 4222 libc = CDLL("libc.so.6") tid = libc.syscall(SYS_gettid) splog('SP: Worker got message: ', currentThread(), _get_ident(), self.ident, os.getpid(), tid ) data = self.__messages.pop() if callable(self.callback): self.callback(data) def stop(self): self.running = False try: self.__pump.recv_msg.get().remove(self.gotThreadMsg) except: pass self.__pump_recv_msg_conn = None def run(self): from ctypes import CDLL SYS_gettid = 4222 libc = CDLL("libc.so.6") tid = libc.syscall(SYS_gettid) splog('SP: Worker got message: ', currentThread(), _get_ident(), self.ident, os.getpid(), tid ) while not self.__queue.empty(): # NOTE: we have to check this here and not using the while to prevent the parser to be started on shutdown if not self.__running: break item = self.__queue.pop() splog('SP: Worker is processing') result = None try: result = item.identifier.getEpisode( item.name, item.begin, item.end, item.service ) except Exception, e: splog("SP: Worker: Exception:", str(e)) # Exception finish job with error result = str(e) config.plugins.seriesplugin.lookup_counter.value += 1 splog("SP: Worker: result") if result and len(result) == 4: season, episode, title, series = result season = int(CompiledRegexpNonDecimal.sub('', season)) episode = int(CompiledRegexpNonDecimal.sub('', episode)) title = title.strip() splog("SP: Worker: result callback") self.__messages.push( (item.callback, (season, episode, title, series)) ) else: splog("SP: Worker: result failed") self.__messages.push( (item.callback, result) ) self.__pump.send(0) #from twisted.internet import reactor #reactor.callFromThread(self.gotThreadMsg) splog('SP: Worker: list is emty, done') Thread.__init__(self) self.__running = False
class SeriesPluginWorker(Thread): def __init__(self, callback): Thread.__init__(self) self.callback = callback self.__running = False self.__messages = ThreadQueue() self.__pump = ePythonMessagePump() try: self.__pump_recv_msg_conn = self.__pump.recv_msg.connect(self.gotThreadMsg) except: self.__pump.recv_msg.get().append(self.gotThreadMsg) self.__queue = ThreadQueue() def empty(self): return self.__queue.empty() def finished(self): return not self.__running def add(self, item): from ctypes import CDLL SYS_gettid = 4222 libc = CDLL("libc.so.6") tid = libc.syscall(SYS_gettid) splog('SP: Worker add from thread: ', currentThread(), _get_ident(), self.ident, os.getpid(), tid ) self.__queue.push(item) if not self.__running: self.__running = True self.start() # Start blocking code in Thread def gotThreadMsg(self, msg=None): from ctypes import CDLL SYS_gettid = 4222 libc = CDLL("libc.so.6") tid = libc.syscall(SYS_gettid) splog('SP: Worker got message: ', currentThread(), _get_ident(), self.ident, os.getpid(), tid ) data = self.__messages.pop() if callable(self.callback): self.callback(data) def stop(self): self.running = False try: self.__pump.recv_msg.get().remove(self.gotThreadMsg) except: pass self.__pump_recv_msg_conn = None def run(self): from ctypes import CDLL SYS_gettid = 4222 libc = CDLL("libc.so.6") tid = libc.syscall(SYS_gettid) splog('SP: Worker got message: ', currentThread(), _get_ident(), self.ident, os.getpid(), tid ) while not self.__queue.empty(): # NOTE: we have to check this here and not using the while to prevent the parser to be started on shutdown if not self.__running: break item = self.__queue.pop() splog('SP: Worker is processing') result = None try: result = item.identifier.getEpisode( item.name, item.begin, item.end, item.service ) except Exception, e: splog("SP: Worker: Exception:", str(e)) # Exception finish job with error result = str(e) config.plugins.seriesplugin.lookup_counter.value += 1 if result and len(result) == 4: splog("SP: Worker: result callback") season, episode, title, series = result season = int(CompiledRegexpNonDecimal.sub('', season)) episode = int(CompiledRegexpNonDecimal.sub('', episode)) title = title.strip() if config.plugins.seriesplugin.replace_chars.value: repl = re.compile('['+config.plugins.seriesplugin.replace_chars.value.replace("\\", "\\\\\\\\")+']') splog("SP: refactor title", title) title = repl.sub('', title) splog("SP: refactor title", title) splog("SP: refactor series", series) series = repl.sub('', series) splog("SP: refactor series", series) self.__messages.push( (item.callback, (season, episode, title, series)) ) else: splog("SP: Worker: result failed") self.__messages.push( (item.callback, result) ) self.__pump.send(0) #from twisted.internet import reactor #reactor.callFromThread(self.gotThreadMsg) splog('SP: Worker: list is emty, done') Thread.__init__(self) self.__running = False
print(f'Displaying frame {count}') # display the image in a window call "video" cv2.imshow('Video Play', frame) # wait 42ms (what was used in the demos) and check if the user wants to quit with (q) if cv2.waitKey(FRAMEDELAY) and 0xFF == ord("q"): break count += 1 frame = frames.obtain() print('Finished displaying all the frames') # signals that its done as per requirement cv2.destroyAllWindows() # cleanup windows if __name__ == "__main__": colorFrames = ThreadQueue() grayFrames = ThreadQueue() # three functions needed: extract frames, convert frames to grayscale, # and display frames at original framerate (24fps) extractThread = threading.Thread(target = extractFrames, args = (VIDEOFILE, colorFrames)) convertThread = threading.Thread(target = convertGrayscale, args = (colorFrames, grayFrames)) displayThread = threading.Thread(target = displayFrames, args = (grayFrames,)) # <- needed to suppress error # start threads extractThread.start() convertThread.start() displayThread.start()