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

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

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

  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'
p.join()
  1. 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'
p.join()

text

3. **Shared memory** (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. Manager для сложных объектов:
python
from multiprocessing import Manager, Process

def worker(d):
    d['key'] = 'value'

with Manager() as manager:
    d = manager.dict()
    p = Process(target=worker, args=(d,))
    p.start()
    p.join()
    print(d)  # {'key': 'value'}

Выбор метода зависит от типа данных и требований к производительности. Для простых данных лучше использовать Queue/Pipe, для сложных - Manager, а для числовых данных - shared memory.

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

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

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

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