尽管其他人无法运行此代码(这不是独立的),但是您显示的内容没有明显的问题.因此,问题出在未显示的问题上-可能是在创建和使用TaskExecutor实例的代码中.
当我凭空插入缺少的部分时,此代码可以正常工作.
因此,您不仅需要展示更多.如何更换:
logger.debug("try to get queued task")
与
logger.debug("try to get queued task from queue %s", self.taskInfos)
?然后至少我们可以看到您的生产者是否正在使用与您的消费者相同的队列.
下一个
感谢您添加.接下来:这是一个独立的程序供您尝试.这非常像您的代码.看看它是否为您正确运行(对我有用):
from threading import Thread, Lock
from Queue import Queue
class Logger:
def __init__(self):
self.iolock = Lock()
def debug(self, str, *msg):
with self.iolock:
print str % msg
error = debug
logger = Logger()
class TaskExecutor(object):
def __init__(self):
logger.debug("init taskExecutor")
self.taskInfos = Queue()
task_thread = Thread(target=self._run_work