我对python比较陌生,尤其是它的多处理功能。显然,在python中,我读到,要进行适当的多处理,就要使用它的多处理库,它实际上创建了新的python进程,而其他进程在同一个核心中划分为线程
我遇到了一个使用Pool
对象及其方法map
的示例,但是当我试图在类中的方法上实现它时,似乎spawnpoolworker
无法将方法放入类中
例如,下面的代码给出了错误AttributeError: 'A' object has no attribute '__multiply'
import multiprocessing as mp
import time
class A:
def __init__(self,data):
self.__data = data
self.sum = [0]*len(data)
self.__multiprocess()
def __multiply(self,num):
time.sleep(1)
return num*2
def __multiprocess(self):
pool = mp.Pool()
results = pool.map(self.__multiply,self.__data)
for i, result in zip(len(self.__data), results):
self.sum[i] = result
if __name__ == "__main__":
data = list(range(0,8))
a = A(data)
print(a.sum)
有没有一种方法可以让我保持类的结构而不将其拆分为函数,同时按照给定的数据顺序给出结果
print(a.sum)
[0, 2, 4, 6, 8, 10, 12, 14]
您可以使用此代码块。问题是使用了
__
(私有函数)相关问题 更多 >
编程相关推荐