Я использую библиотеку 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
с сериализовать нелегко.