Давайте рассмотрим следующий пример:
from pathos.pools import ProcessPool
class A:
def run(self, arg: int):
my_list = list(...)
my_dict = dict(...)
def __run_parallel(arg: int):
local_variable = 42
# some code and read access...
read_only1 = my_list[...]
read_only2 = dict[...]
# some code and write access...
my_list.append(arg)
my_dict[arg] = local_variable
ProcessPool(4).map(__run_parallel, range(1000))
Поскольку кажется, что list
или dict
не являются поточно-ориентированными, я ищу способ эффективно предоставить общий доступ к этим переменным для всех процессов в пуле.
До сих пор я пытался передать my_list
и my_dict
в качестве дополнительных аргументов __run_parallel
, используя pa.helpers.mp.Manager
. Однако, несмотря на то, что он работает, он ужасающе медленный (поскольку он явно создан для распределенных систем).
Поскольку я работаю над этим в режиме проб и ошибок уже несколько вечеров, я хотел бы спросить знает ли кто-нибудь, как эффективно использовать общие dict
и list
внутри __run_parallel
, используя pathos
.