@simplepy

Вопрос про протоки, как что то делать после их завершения?

В общем, у меня есть телеграм бот.
При написании команды /work он запускает поток 1, который запускает 100 других потоков X, и мне нужно как то после завершения этих X потоков, поток 1 что то выдал и при этом весь бот работал и если другой юзер пропишет /work то тоже все работало
  • Вопрос задан
  • 45 просмотров
Пригласить эксперта
Ответы на вопрос 1
lxstvayne
@lxstvayne
Люблю Python
Вероятно, вам нужно что-то похожее на это:

from threading import Thread
from time import sleep


def hard_calculations():
    # some calculations...
    sleep(0.3)


class CustomThread(Thread):
    def __init__(self):
        super().__init__()
        self._result = None

    def run(self) -> None:

        threads = []
        for i in range(5):
            t = Thread(target=hard_calculations)
            t.start()
            threads.append(t)

        # Дожидаемся выполнения всех потоков
        for thread in threads:
            thread.join()

        print(f'{self.name} is done!')
        self._result = 'furfurfur'

    @property
    def result(self):
        return self._result


if __name__ == '__main__':
    t = CustomThread()
    t.start()
    t.join()  # Дожидаемся завершения нашего `главного` потока

    print(t.result)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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