【发布时间】:2021-02-17 19:36:24
【问题描述】:
我试图通过多处理使用并行化来在迭代函数中实现良好的执行时间,但我无法做到。
我的功能是这个
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)
例子:
我想并行化 build 函数
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% 的使用率。 会发生什么?
谢谢
【问题讨论】:
-
请edit这个问题,不要发布它作为答案。 (除非你真的想回答这个问题。)
-
该示例未使用
multiprocessing。该示例应演示您观察到的问题。 -
好的。我发布了两个版本。
-
多处理示例引发
TypeError: list indices must be integers or slices, not list,它不是“未运行且所有处理器达到 100% 使用率”。
标签: python parallel-processing multiprocessing python-multiprocessing