Sobes.tech
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()

Такой подход гарантирует, что несколько потоков могут безопасно добавлять и извлекать элементы из очереди без состояния гонки.