Встречается на собеседованиях • сегодня
Как организовать обмен данными между процессами в библиотеке multiprocessing
В Python для обмена данными между процессами в модуле multiprocessing можно использовать несколько механизмов:
- Очереди (Queue) - потокобезопасная очередь FIFO:
python
from multiprocessing import Process, Queue
def worker(q):
q.put('Hello from child')
if __name__ == '__main__':
q = Queue()
p = Process(target=worker, args=(q,))
p.start()
print(q.get()) # Выведет: Hello from child
p.join()- Каналы (Pipe) - двунаправленное соединение:
python
from multiprocessing import Process, Pipe
def worker(conn):
conn.send('Message')
conn.close()
parent_conn, child_conn = Pipe()
p = Process(target=worker, args=(child_conn,))
p.start()
print(parent_conn.recv()) # Выведет: Message
p.join()- Разделяемая память (Value/Array):
python
from multiprocessing import Process, Value, Array
def worker(n, a):
n.value = 3.14
a[0] = 10
num = Value('d', 0.0)
arr = Array('i', range(10))
p = Process(target=worker, args=(num, arr))
p.start()
p.join()
print(num.value) # 3.14
print(arr[:]) # [10, 1, 2, ...]Для сложных структур данных можно использовать Manager, который создает прокси-объекты. Выбор метода зависит от задачи: Queue/Pipe для сообщений, Value/Array для числовых данных, Manager для сложных структур.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы