изменить / получить доступ к экземпляру Python из внешнего скрипта или команды - PullRequest
0 голосов
/ 01 июня 2019

У меня работает основной код Python (при запуске) с экземпляром класса в нем.Я хотел бы иметь возможность изменить этот экземпляр (его аргументы), когда я хочу (как пользователь).Идея состоит в том, чтобы иметь возможность изменять его, не нарушая основной код и не заставляя его читать внешний скрипт каждые 2 секунды.Таким образом, я смогу запустить команду bash или новый скрипт на python, который изменит этот экземпляр, созданный в основном запущенном скрипте.

Я использую Python 3, но уже / пробовал разные вещи:

  • написать метод с прослушиванием открытого сокета в классе, соответствующем экземпляру.Мне кажется излишним.
  • иметь возможность доступа к экземпляру по его адресу в памяти с помощью некоторых инструментов, таких как ctypes и id.Но я получил ошибки таким образом (ошибка сегментации)

от терминала 1:

>>> a='c'
>>> hex(id(a))
'0x7fc9f825a378'

от терминала 2:

>>> import ctypes
>>> d = (ctypes.c_char).from_address(0x7fc9f825a378)
>>> d
Segmentation fault (core dumped)

Итак, как можноЯ изменяю экземпляр в работающем скрипте из моего archlinux os как пользователь?

Большое спасибо за ваше время

1 Ответ

0 голосов
/ 01 июня 2019

Я посмотрел на все, что смог найти о разделяемой памяти Python. Но я не нашел никакого решения просто поделиться словарем или "нормальным" массивом в моей системе POSIX.

  • sysv_ipc или posix_ipc использовать буферы для строк, усложняя все (требует разбора).

  • многопроцессорная обработка позволяет делать это, но из того же сценария нет идентификатора / ключа для доступа к нему из другого экземпляра Python.

  • SharedArray Делайте это, но с массивными массивами.

Знаете ли вы библиотеку Python с общей памятью, которая позволяет просто обмениваться объектами, такими как словарь или обычный список?

Спасибо за ваше время.

...