Обмен данными между потоками



deque также полезен, когда ты кодируешь многопоточные приложения. Ты можешь безопасно добавлять и удалять данные с обоих концов потока одновременно из отдельных потоков без риска повреждения данных или других связанных с этим проблем. В данном примере product() принимает queue и size в качестве аргументов. Затем он использует random.randint() в цикле while для непрерывного создания случайных чисел и сохранения их в глобальном deque с именем shared queue. Вспомогательная функция wait seconds()возвращает случайное значение времени ожидания между заданным диапазоном секунд, mins и maxs. В Consume() ты вызываешь .popleft() внутри цикла для систематического извлечения и удаления данных из shared queue. Затем обворачиваешь вызов .popleft() в try except, чтобы обрабатывать те случаи, когда общая очередь пуста. Последние две строки в сценарии создают и запускают отдельные потоки для одновременного выполнения функций produce() и consume().



#практика