Размещение объектов Python в общей памяти - PullRequest
14 голосов
/ 07 июня 2011

Существует ли модуль Python, который позволил бы мне размещать экземпляры нетривиальных пользовательских классов в разделяемой памяти?

Под этим я подразумеваю размещение непосредственно в разделяемой памяти, а не извлечение в нее и из нее.

multiprocessing.Value и multiprocessing.Array не будут работать для моего варианта использования, поскольку они, похоже, поддерживают только примитивные типы и их массивы.

Единственное, что я нашел до сих пор, это POSH , но оно не изменилось за восемь лет.Это говорит о том, что он либо суперстабилен, либо устарел.Прежде чем тратить время на попытки заставить его работать, я хотел бы знать, есть ли альтернативы, которые я еще не обнаружил.

Мне нужно это только для работы в Linux.

1 Ответ

1 голос
/ 08 июня 2011

Это довольно сложно.Лучшее решение, которое я могу придумать, - это выбрать объекты и использовать c_char_p с multiprocessing.sharedctypes .Вы все равно должны убедиться, что нулевые байты не попали в c_char_p, либо путем их экранирования, либо преобразования в шестнадцатеричный код.

Подумав еще, возможно, вам следует использовать POSH.

...