队列仅在父modu中返回值

2024-06-16 12:42:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我不明白为什么会发生这种情况,但我的线程只有在其父模块中运行时才会返回值

我的方法。我已经排除了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)

我收到了预期的dict列表,但如果我将其导入另一个模块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()

我只收到一张空名单


Tags: 模块selfidzonedataifqueuedef