我不明白为什么会这样,但是我的线程只有在其父模块中运行它时才返回值。
我的方法。我已经排除了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()
我只收到一个空列表。