Какие знаешь способы реализации межпроцессного взаимодействия

Python Senior Okko
Какие знаешь способы реализации межпроцессного взаимодействия
Ответы
В Python есть несколько способов для межпроцессного взаимодействия (IPC): - **Сокеты** — низкоуровневый, но гибкий способ. Пример: ``` # Сервер import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(('localhost', 12345)) s.listen(1) conn, addr = s.accept() data = conn.recv(1024) ``` - **Очереди (multiprocessing.Queue)** — потокобезопасная очередь: ``` from multiprocessing import Process, Queue def worker(q): q.put('Hello from child!') q = Queue() p = Process(target=worker, args=(q,)) p.start() print(q.get()) # 'Hello from child!' ``` - **Pipe** — двунаправленный канал: ``` from multiprocessing import Pipe, Process 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' ``` - **Shared Memory** (multiprocessing.Value/Array) — общая память: ``` from multiprocessing import Process, Value def worker(n): n.value += 1 num = Value('i', 0) p = Process(target=worker, args=(num,)) p.start() p.join() print(num.value) # 1 ``` - **Менеджеры (multiprocessing.Manager)** — разделяемые объекты: ``` from multiprocessing import Manager, Process def worker(d): d['key'] = 'value' manager = Manager() d = manager.dict() p = Process(target=worker, args=(d,)) p.start() p.join() print(d) # {'key': 'value'} ``` Выбор зависит от задачи: для простых случаев подойдут Pipe/Queue, для сложных — сокеты или менеджеры.