队列仅在父模块中返回值

时间:2019-05-21 06:28:46

标签: python multithreading queue

我不明白为什么会这样,但是我的线程只有在其父模块中运行它时才返回值。

我的方法。我已经排除了SQL语句,但是我100%确信它可以工作。 result是许多字典,因此它是一个单值变量。

def _transits_data(self,zone_id, interval, queue):
     while datetime.now() >= session_interval:
            result = SQLConnector().query(statement, zone_id, interval, interval, fetch=True)
            queue.put(result)

接下来我开始我的话题

def start(self, zone_id, interval):
        queue = Queue()
        self.transits_list =Thread(target=self._transits_data, args=(zone_id, interval, queue))
        return queue.get()

所以如果我在同一模块中运行

if __name__ == '__main__':
    transits_listener = TransitsListener()
    result = transits_listener.start(zone_id, interval)
    print(result)

我收到了预期的字典列表,但是如果将其导入另一个模块application.py

class Application
   def __init__(self):
       self.transits_listener = TransitsListener()
   def run(self):
       transits_list = self.transits_listener(zone_id, interval)
       print(transits_list)
if __name__ == '__main__':
  app = Application()
  app.run()

我只收到一个空列表。

0 个答案:

没有答案