Встречается на собеседованиях • сегодня

Как общаться между несколькими потоками

В Python для межпоточного взаимодействия используют несколько механизмов:

  1. Очереди (Queue) - потокобезопасный способ обмена данными:
python
from queue import Queue
from threading import Thread

def worker(q):
    while True:
        item = q.get()
        print(f"Обработано: {item}")
        q.task_done()

q = Queue()
Thread(target=worker, args=(q,), daemon=True).start()
q.put("данные")
q.join()

text

2. **События (Event)** - для простой синхронизации:
```python
from threading import Event, Thread

event = Event()

def waiter():
    print("Ожидание события")
    event.wait()
    print("Событие получено")

Thread(target=waiter).start()
event.set()  # Разблокировать ожидающие потоки
  1. Условные переменные (Condition) - для более сложной синхронизации
  2. Семафоры (Semaphore) - для ограничения доступа к ресурсам

Важно помнить о GIL - операции с общими данными должны быть потокобезопасными. Для CPU-задач лучше использовать multiprocessing.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы