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

Как можно обмениваться данными между процессами в Multiprocessing

В Python для обмена данными между процессами можно использовать несколько механизмов:

  1. Очереди (Queue) - потокобезопасный способ передачи данных:
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())  # Получаем данные
    p.join()
  1. Каналы (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())  # Получаем сообщение
p.join()
  1. Разделяемая память (Value, Array):
python
from multiprocessing import Process, Value, Array

def worker(n, a):
    n.value = 3.1415
    a[0] = 5

num = Value('d', 0.0)
arr = Array('i', range(10))
p = Process(target=worker, args=(num, arr))
p.start()
p.join()
print(num.value, arr[:])
  1. Менеджеры - позволяют разделять сложные структуры данных между процессами.

Выбор метода зависит от задачи: Queue/Pipe для сообщений, Value/Array для числовых данных, Manager для сложных структур. Все эти методы обеспечивают безопасный обмен данными между процессами.

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

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

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

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