我试图使用多处理并行化来获得迭代函数中的良好执行时间,但我无法做到这一点
我的职能是
for i in range(len(self.set)):
degree = self.__degree__(self.set[i])
self.subsets.append(degree)
我称之为使用
self.__build__()
--
我试着制作一个类似这样的并行版本:
def __buildParallel__(self, i):
degree = self.__degree__(self.set[i])
self.subsets[i].append(degree)
我使用
import multiprocessing as mp
pool = mp.Pool()
pool.map(self.__buildParallel__, self.set)
例如:
我想并行化构建函数
import math
class Testing(object):
def __init__(self, inputSet):
self.set = inputSet
self.subsets = []
self.__build__()
def __build__(self):
for i in range(len(self.set)):
degree = self.__degree__(self.set[i])
self.subsets.append(degree)
def __degree__(self, element):
return element[0] * 0.01
anObject = Testing([[1],[2],[3],[4],[5]])
--
尝试并行版本
import math
import multiprocessing as mp
class Testing(object):
def __init__(self, inputSet):
self.set = inputSet
self.subsets = []
pool = mp.Pool()
pool.map(self.__buildParallel__, self.set)
def __buildParallel__(self, i):
degree = self.__degree__(self.set[i])
self.subsets[i].append(degree)
def __degree__(self, element):
return element[0] * 0.01
anObject = Testing([[1],[2],[3],[4],[5]])
发生的情况是,程序根本无法运行,所有处理器的使用率都达到100%。 会发生什么
谢谢
对流程中的类所做的任何修改都是在该流程的上下文中进行的,并且不会更改原始类。使用
pool.map
,将收集并返回映射函数的返回值请注意,在创建池进程时会有开销,因此这个简单的示例通常并行运行速度较慢,但我添加了一个sleep,以显示并行工作需要一些时间
结果(5秒后):
相关问题 更多 >
编程相关推荐