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

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

В Python есть несколько способов для межпроцессного взаимодействия (IPC):

  1. Сокеты — низкоуровневый, но гибкий способ. Пример:
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)
  1. Очереди (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'
  1. 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
  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, для сложных — сокеты или менеджеры.

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

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

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

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