Очередь возвращает значения только в родительском модуле - PullRequest
0 голосов
/ 21 мая 2019

Я не понимаю, почему это происходит, но мой поток возвращает значение, только если запустить его в родительском модуле.

Мой метод. Я исключил оператор 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()

Я получаю только пустой список.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...