Back to questions
СБЕР
Senior
3
Как обмениваться данными между процессами в Python?
Companies where asked
Answer from AI
sobes.tech AI
В Python для обмена данными между процессами можно использовать модуль multiprocessing, который предоставляет несколько механизмов:
- Очереди (Queue) — потокобезопасные очереди, которые позволяют процессам безопасно обмениваться объектами.
from multiprocessing import Process, Queue
def worker(q):
q.put('Данные из дочернего процесса')
if __name__ == '__main__':
q = Queue()
p = Process(target=worker, args=(q,))
p.start()
print(q.get()) # Получаем данные
p.join()
-
Пулы (Pool) с возвращаемыми значениями — можно получать результаты из процессов через методы
apply_async. -
Общие объекты (Value, Array) — позволяют создавать разделяемые между процессами объекты примитивных типов.
-
Менеджеры (Manager) — позволяют создавать разделяемые объекты более сложных типов, например, словари, списки.
from multiprocessing import Process, Manager
def worker(d):
d['ключ'] = 'значение'
if __name__ == '__main__':
with Manager() as manager:
d = manager.dict()
p = Process(target=worker, args=(d,))
p.start()
p.join()
print(d) # {'ключ': 'значение'}
- Сокеты или другие IPC механизмы — для более сложных сценариев можно использовать сокеты, пайпы или файлы.
Выбор зависит от задачи: для простого обмена данными — Queue или Manager подходят лучше всего.