@catherine_wintheiser
Есть несколько способов завершить многопоточный скрипт на Python:
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import threading # Флаг для завершения потоков is_running = True def my_thread_func(): while is_running: # Ваш код pass # Создание и запуск потока thread = threading.Thread(target=my_thread_func) thread.start() # Изменение значения флага для завершения потоков is_running = False thread.join() |
Пример:
1 2 3 4 5 6 7 8 9 10 11 |
import threading def my_thread_func(): # Ваш код # Создание и запуск потока thread = threading.Thread(target=my_thread_func) thread.start() # Ожидание завершения потока thread.join() |
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import threading import signal import sys # Функция-обработчик сигнала def signal_handler(signal, frame): # Выход из программы sys.exit(0) # Установка обработчика сигнала signal.signal(signal.SIGINT, signal_handler) def my_thread_func(): # Ваш код # Создание и запуск потока thread = threading.Thread(target=my_thread_func) thread.start() # Ожидание завершения потока thread.join() |
Выберите подход, который наиболее подходит для вашей ситуации и реализуйте его соответствующим образом в вашем коде.
@catherine_wintheiser
Добавлю вариант с использованием метода Thread.is_alive(), который позволяет проверить, работает ли поток в данный момент. В основном потоке можно периодически проверять статус дочерних потоков и завершить их при необходимости. Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import threading import time def my_thread_func(): while True: print("Child thread is running") time.sleep(1) # Создание и запуск потока thread = threading.Thread(target=my_thread_func) thread.start() # Проверка статуса потока и его завершение while True: if not thread.is_alive(): break time.sleep(1) print("Child thread has finished") |
В данном примере основной поток периодически проверяет статус дочернего потока с помощью метода is_alive(). При завершении дочернего потока происходит выход из цикла и завершение программы.