Как преобразовать ProxyObject в python многопроцессорном менеджере в обычный python объект - PullRequest
0 голосов
/ 12 февраля 2020

Я использую библиотеку multiprocessing в python 3.7.

В моем случае я начинаю с обычного list из dict s - я использую это для создания ListProxy объект из SyncManager, который я затем использую в пуле для синхронизации list (созданного как показано ниже).

data = [{...},{...},{...}] # arbitrary list of dicts that I want to sync in a pool

with Manager() as manager:

  list_proxy = manager.list()
  for row in data:
    list_proxy.append(manager.dict(row))

  # ... list_proxy used in pool.starmap later

Мой вопрос: есть ли Pythoni c способ изменить мой ListProxy вернуться в обычный список после завершения работы пула? Я просмотрел документы и даже исходный код, и кажется, что единственным способом может быть использование метода _getvalue() из класса BaseProxy - но это кажется хакерским, и мне также придется рекурсивно 'непрокси' любые вложенные прокси-объекты.

Мне нужно вернуть обычный список, чтобы сериализовать его до json позже в коде, ProxyObject с сериализовать нелегко.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...