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

Как передать данные между потоками

В 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, daemon=True).start()

q.put('данные1')
q.put('данные2')
q.join() # ждем завершения обработки

text

2. **Глобальные переменные** - требует синхронизации через Lock:
```python
from threading import Lock

shared_data = []
lock = Lock()

def thread_func():
    with lock:
        shared_data.append('value')
  1. Event или Condition - для уведомлений между потоками.

Очереди (Queue) - наиболее предпочтительный способ, так как они изначально потокобезопасны и предоставляют удобный интерфейс для producer-consumer взаимодействия. Глобальные переменные требуют ручной синхронизации и могут привести к race condition, если не использовать Lock.

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

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

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

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