gpt4 book ai didi

Python(多处理): How to pass a dictionary as the argument of a worker process initializer function?

转载 作者:行者123 更新时间:2023-12-01 08:44:04 25 4
gpt4 key购买 nike

我正在使用一个函数来初始化进程池的工作进程,该函数有一个参数,它是一个字典。创建进程池并调用函数来初始化每个工作进程时,我收到有关参数数量错误的错误:

TypeError: _init_worker() takes 1 positional argument but 2 were given

正在使用的进程初始化函数:

def _init_worker(shared_arrays):

_global_shared_arrays = shared_arrays

每个工作进程都以正常方式调用初始化程序:

with multiprocessing.Pool(processes=_NUMBER_OF_WORKER_PROCESSES,
initializer=_init_worker, initargs=(arrays_dict)) as pool:

我认为这与字典作为参数传递的方式有关,因为上面的错误总是将字典中的项目数列出为传递的位置参数的数量,就好像传递的是字典的键而不是字典本身。当我进入调试器中的代码时,这正是发生的情况,即,如果字典参数中有单个项目,则只有键传递到初始化函数,而不是字典本身。

如果字典中有多个项目用作传递给初始化函数的参数,则会显示上述错误消息,将字典中的项目数报告为给定的位置参数的数量,因此它会以某种方式传递字典的键作为参数而不是字典本身。

我在这里做错了什么?

最佳答案

initargs 将被解包,因此您必须传递一个元组,例如

initargs=(arrays_dict,)

关于Python(多处理): How to pass a dictionary as the argument of a worker process initializer function?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53377028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com