Python 有没有一种方法可以在另一个用户定义类上的用户定义类中使用多处理来修改它的一个属性?
我正在尝试做如下事情:Python 有没有一种方法可以在另一个用户定义类上的用户定义类中使用多处理来修改它的一个属性?,python,python-3.x,multithreading,multiprocessing,python-multiprocessing,Python,Python 3.x,Multithreading,Multiprocessing,Python Multiprocessing,我正在尝试做如下事情: import multiprocessing as mp class X: def __init__(self,num): self.num = num def add(self): self.num += 1 def add_arg(self, num): self.num+= num def extra_fancy_add(self, arg1, arg2):
import multiprocessing as mp
class X:
def __init__(self,num):
self.num = num
def add(self):
self.num += 1
def add_arg(self, num):
self.num+= num
def extra_fancy_add(self, arg1, arg2):
self.num += arg1/arg2
class Y:
def __init__(self, X):
self.X = X
def add_all(self):
with mp.Pool(processes=8) as pool:
pool.starmap(X.add, [i for i in self.X])
def fancy_add(self,num):
with mp.Pool(processes=8) as pool:
pool.starmap(X.add_arg, [(i, num) for i in self.X])
def extra_fancy_add(self,num, num2):
with mp.Pool(processes=8) as pool:
pool.starmap(X.extra_fancy_add, [(i, num, num2) for i in self.X])
x = [X(i) for i in range(0,10)]
Y = Y(x)
Y.add_all()
# [i.num for i in Y.X] = [1,2,3,4....] instead of [0,1,2,3,4....]
x = [X(i) for i in range(0,10)]
Y = Y(x)
Y.fancy_add(10000)
# [i.num for i in Y.X] = [10000, 10001, 10002...] instead of [0,1,2,3,4....]
x = [X(i) for i in range(0,10)]
Y = Y(x)
Y.extra_fancy_add(1,2)
# [i.num for i in Y.X] = [0.5,1,1.5,2,...] instead of [0,1,2,3,4....]
但现在我似乎无法将参数正确地传递到池星图中。我不断收到属性错误,说明X没有属性。添加。尝试
I.add
而不是X.add
。您希望使用的元素来自迭代器,而不是整个迭代器。这不起作用,因为我不在列表理解范围内,所以它没有定义。