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