Junior — Middle
65
Использовали ли вы в своих проектах потокобезопасные структуры данных для очередей?
Answer from AI
sobes.tech AI
В Python для потокобезопасных очередей часто используется модуль queue, который предоставляет классы Queue, LifoQueue и PriorityQueue. Они реализованы с использованием блокировок, что позволяет безопасно использовать их в многопоточных приложениях.
Пример использования потокобезопасной очереди:
import threading
import queue
q = queue.Queue()
def producer():
for i in range(5):
q.put(i)
print(f"Произведено: {i}")
def consumer():
while True:
item = q.get()
if item is None:
break
print(f"Потреблено: {item}")
q.task_done()
producer_thread = threading.Thread(target=producer)
consumer_thread = threading.Thread(target=consumer)
producer_thread.start()
consumer_thread.start()
producer_thread.join()
q.put(None) # сигнал для завершения потребителя
consumer_thread.join()
Такой подход гарантирует, что несколько потоков могут безопасно добавлять и извлекать элементы из очереди без состояния гонки.