我有一个包含大成员变量的类。我想要一些计算同时应用于这个变量。
class A(object):
def __init__(self):
self.x = numpy.random.random((1e6,)) # some really large array
def func(self, t): # a function that is expected to run concurrently
# some computation that uses self.x
return 0 # here I just return 0 for simplicity
我以这种方式打电话给这个班级(使用悲情' s multiprocess
):
from multiprocess import Pool
a = A()
pool = Pool(16)
results = pool.map(a.func, range(16))
这很慢。我怀疑这是因为大数组被复制到每个进程,而不是被共享。如何在进程之间共享这个大型类成员变量?
P.S。我使用了病毒的multiprocess
而不是Python的multiprocessing
,因为后者无法挑选实例方法。