Python多进程初始化P

2024-10-05 14:21:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个大的只读对象,我希望子进程使用它,但不幸的是这个对象不能被pickle。考虑到它是只读的,我考虑将它声明为全局的,然后在池中使用一个初始化函数来执行必要的复制。我的代码是这样的:

def f(processes, args):

    global pool   
    pool = multiprocessing.Pool(processes,setGlobal,[args])

def setGlobal(args):

    # global object to be used by the child processes... 
    global obj
    obj = copy.deepcopy(args)

函数setGlobal执行初始化。我的第一个问题涉及setGlobal的参数(作为列表传递)。这些需要腌制吗?我得到的错误似乎表明他们确实如此。如果是这样的话,我如何使我的子进程可以看到不可复制的只读对象


Tags: 对象函数代码obj声明进程defargs