import threading, time cond = threading.Condition() # Konzumer bude čekat na splnění podmínky producenta def consumer(id): with cond: cond.wait() print("Konzumer {} obdržel zprávu.".format(id)) # Producent udělá práci a oznámi dokončení některému z konzumentů def producer(): time.sleep(2) for i in range(5): with cond: print("Producent vyprodukoval zprávu.") cond.notify() time.sleep(2) def thread_run(): threads = [] prod_thread = threading.Thread(target=producer) prod_thread.start() for i in range(5): cons_thread = threading.Thread(target=consumer, args=(i,)) threads.append(cons_thread) cons_thread.start() prod_thread.join() for cons_thread in threads: cons_thread.join() print("Vlákna dokončila práci.") thread_run()```