Python fork (): передача данных от дочернего к родительскому - PullRequest
9 голосов
/ 03 июня 2011

У меня есть основной процесс Python и группа или рабочие, созданные основным процессом с использованием os.fork().

Мне нужно передать большие и достаточно сложные структуры данных от рабочихвернуться к основному процессу.Какие существующие библиотеки вы бы порекомендовали для этого?

Структуры данных представляют собой смесь списков, словарей, numpy массивов , пользовательских классов (которые я могу настроить) и многослойных комбинацийиз вышеупомянутого.

Следует избегать дискового ввода-вывода.Если бы я мог также избежать создания копий данных - например, имея какое-то решение с разделяемой памятью - это тоже было бы неплохо, но не является жестким ограничением.

Для целей этого вопроса, обязательно, чтобы рабочие создавались с использованием os.fork() или его оболочки, которая клонировала бы адресное пространство главного процесса.

Это должно работать только в Linux.

1 Ответ

1 голос
/ 06 апреля 2018
Реализация очереди

multiprocessing работает.

q = multiprocessing.Queue()
if (os.fork() == 0):
    print(q.get())
else:
    q.put(5)
# outputs: 5
...