Встречается на 1% собеседований по Python
Какие знаешь способы реализации межпроцессного взаимодействия
В Python есть несколько способов для межпроцессного взаимодействия (IPC):
- Сокеты — низкоуровневый, но гибкий способ. Пример:
python
# Сервер
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) — потокобезопасная очередь:
python
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!'
text
3. **Pipe** — двунаправленный канал:
```python
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) — общая память:
python
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) — разделяемые объекты:
python
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, для сложных — сокеты или менеджеры.

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