@fox777777777

Как вытащить значение из потока?

Мне нужно чтобы в другом потоке сканировали БД, и если есть такие значение, то выполнялся код.

Как это можно сделать?

Мой пример, который выводит None:
def search_for_teachers():
    while True:
        connection_obj = sqlite3.connect('test.db', check_same_thread=False)
        cursor_obj = connection_obj.cursor()
        teacher = ''.join('\n'.join((' '.join(v) for v in cursor_obj.execute("SELECT First_Name, Last_Name, Patronymic, Class, ID FROM TEST WHERE Who_teacher = 1").fetchall())))
        connection_obj.close()
        if bool(teacher):
            return True

t1 = Thread(target = search_for_teachers).start()

if t1:
    print(1)
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Ну конечно start() возвращает None, чего ты ожидал? На момент завершения start() поток ещё неизвестно сколько работать будет, откуда start() знать, что он в итоге вернёт?

Сделай класс-наследник Thread(), и переопредели в нём метод run().
Тогда ты сможешь объявлять в этом классе свои поля, и использовать их как захочешь - например, для возврата результатов.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы