2015-07-06 4 views
0

Я использую PyRserve. Я хочу выполнить некоторые оценки R из нескольких запущенных процессов python. Все эти оценки должны использовать одни и те же глобальные переменные, поэтому это сэкономит много времени, если каждое новое соединение сможет использовать эти переменные после определения только один раз. Обратите внимание, что переопределять их при каждом соединении не является выбором, потому что это занимает много времени (например, некоторые переменные - это модели, загруженные из файлов). Есть ли способ иметь несколько соединений PyRserve, которые имеют определенные переменные? Если бы не то, что было бы хорошим обходным путем здесь?Несколько соединений с общей памятью с использованием PyRserve

В документации я не нашел ничего определенного.

ответ

0

Из pyRserve documentation, казалось бы, общие объекты памяти не может * быть назначены соединениями пространств имен:

В текущей реализации pyRserve позволяет установить и получить доступ к следующим базовым типам:

  • None (NULL)
  • boolean
  • целые числа (только 32-разрядные)
  • числа с плавающей точкой (64 бит только), то есть в два раза
  • комплексные числа
  • струны

Кроме того следующие контейнеры поддерживаются:

  • списки
  • Numpy массивы
  • TaggedList
  • AttrArray
  • TaggedArray

Если вы порождая рабочий процесс для каждого соединения, я бы направить вас к библиотеке питон multiprocessing, что дает вам общие объекты памяти простых типов, а также более высокий уровень управляемых объектов под классом mp.Manager.

* Возможно, я не тестировал это ...

+0

Спасибо за ваш ответ! Я знаю о менеджерах (каламбур :) :), но здесь дело в том, что у нас много R-кода, который загружает в память несколько моделей. Использование многопроцессорности для его совместного использования на стороне клиента потребует дополнительной работы, которая *, если * была предоставлена ​​альтернатива, я бы хотел избежать. Но, к сожалению, похоже, что нет хорошей альтернативы. – abhgh