小编Dav*_*ang的帖子

在这种情况下,多处理会复制对象吗?

import multiprocessing
import numpy as np
import multiprocessing as mp
import ctypes

class Test():
    def __init__(self):
        shared_array_base = multiprocessing.Array(ctypes.c_double, 100, lock=False)
        self.a = shared_array = np.ctypeslib.as_array(shared_array_base)

    def my_fun(self,i):
        self.a[i] = 1

if __name__ == "__main__":
    num_cores = multiprocessing.cpu_count()

    t = Test()

    def my_fun_wrapper(i):
        t.my_fun(i)

    with mp.Pool(num_cores) as p:
        p.map(my_fun_wrapper, np.arange(100))

    print(t.a)
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我尝试编写一段代码来修改数组,使用multiprocessing. 在每个进程中执行的函数应该修改作为参数传递给索引处的my_fun()数组的值。关于上面的代码,我想知道复制的是什么。a[:]imy_fun()

1)每个进程都复制代码中的任何内容吗?我认为该物体可能是,但理想情况下什么都不是。

2)有没有办法绕过my_fun()对对象使用包装函数?

python parallel-processing numpy multiprocessing python-multiprocessing

5
推荐指数
1
解决办法
4071
查看次数