import threading import time event = threading.Event() def test(): while True: event.wait() print("test") time.sleep(2) def start_event_thread_1(): event.clear() threading.Thread(target=test, daemon=True).start() time.sleep(3) event.set() while True: pass ### ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def image_handler(): thr_num = threading.current_thread().name print(f"Идет подготовка изображения из потока [{thr_num}]") event.wait() print("Изображение оправлено") def start_event_thread_2(): for i in range(10): threading.Thread(target=image_handler, name=str(i)).start() print(f'Поток [{i}] запущен!') time.sleep(1) if threading.active_count() > 10: event.set() ### ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ cond = threading.Condition() def f1(): while True: with cond: cond.wait() print("Получил событие!") def f2(): for i in range(100): if 1 % 10 == 0: with cond: cond.notify() else: print(f"f1: {i}") time.sleep(1) threading.Thread(target=f1).start() threading.Thread(target=f2).start()