本文整理汇总了Python中ThreadQueue.ThreadQueue.pop方法的典型用法代码示例。如果您正苦于以下问题:Python ThreadQueue.pop方法的具体用法?Python ThreadQueue.pop怎么用?Python ThreadQueue.pop使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ThreadQueue.ThreadQueue
的用法示例。
在下文中一共展示了ThreadQueue.pop方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: SeriesPluginWorker
# 需要导入模块: from ThreadQueue import ThreadQueue [as 别名]
# 或者: from ThreadQueue.ThreadQueue import pop [as 别名]
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
示例2: SeriesPluginWorker
# 需要导入模块: from ThreadQueue import ThreadQueue [as 别名]
# 或者: from ThreadQueue.ThreadQueue import pop [as 别名]
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)
#.........这里部分代码省略.........