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

Python Junior Без компании
Как можно обмениваться данными между процессами в Multiprocessing
Ответы
В Python для обмена данными между процессами можно использовать несколько механизмов: - **Очереди (Queue)** - потокобезопасный способ передачи данных: ``` 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() ``` - **Каналы (Pipe)** - двунаправленное соединение: ``` 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() ``` - **Разделяемая память** (Value, Array): ``` 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[:]) ``` - **Менеджеры** - позволяют разделять сложные структуры данных между процессами. Выбор метода зависит от задачи: Queue/Pipe для сообщений, Value/Array для числовых данных, Manager для сложных структур. Все эти методы обеспечивают безопасный обмен данными между процессами.