Я не понимаю, почему это происходит, но мой поток возвращает значение, только если запустить его в родительском модуле.
Мой метод. Я исключил оператор 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()
Я получаю только пустой список.