使用该线程在函数内向python线程的队列添加项目

时间:2017-02-15 16:59:27

标签: multithreading python-2.7 queue

我正在构建一个机器人头部,通过AIML机器人监听和说话,同时相机用opencv2挑选面部。我有各种各样的线程运行,以便它可以同时观察,聆听,说话和移动它的嘴,眼睛和整个头部。线程需要相互交互,我有代码执行此操作。这"听"线程需要将数据传递回主模块。这很好用:

class listen(threading.Thread):
    def __init__(self, workQueue, queueLock):
        super(listen, self).__init__()   
        self.workQueue = workQueue
        self.queueLock= queueLock

    def run(self): # "listening" thread  
        with sr.Microphone() as source:
        # do lots of things......
        self.workQueue.put(some_data)  # put data in queue

我的问题是我的听力"线程调用函数"说()"并且它来自这个函数,我需要做workQueue.put()而不是上面的run(self)定义。我无法理解如何从say()函数中引用self.workQueue.put(some_data)的语法,或者确实是可能的。希望这是有道理的。

0 个答案:

没有答案