Для того чтобы корректно завершить работу нескольких потоков, запущенных из отдельного потока, в Python можно воспользоваться механизмом для работы с потоками из стандартной библиотеки threading
.
Для управления жизненным циклом потоков можно использовать флаги или события. Например, можно создать флаг running
, который будет указывать потокам, должны ли они продолжать выполнение. Когда нужно завершить работу всех потоков, можно установить флаг running
в False
, и потоки будут завершать свою работу.
Пример:
import threading import time def worker(): while running: print("Working...") time.sleep(1) running = True threads = [] for _ in range(3): t = threading.Thread(target=worker) t.start() threads.append(t) # Ждем какое-то время time.sleep(5) # Останавливаем потоки running = False for t in threads: t.join() print("All threads stopped.")
В этом примере создаются три потока, каждый из которых выполняет функцию worker
. Функция worker
в цикле проверяет флаг running
и останавливает свою работу, если флаг установлен в False
. После некоторого времени флаг running
устанавливается в False
, после чего все потоки завершают свою работу и программа выводит сообщение "All threads stopped."
Таким образом, путем управления флагами или событиями можно элегантно завершить работу нескольких потоков, запущенных из отдельного потока.