Возможный дубликат:
как я могу распараллелить простой цикл python?
Я новичок в Python (используя Python 3.2), и у меня есть вопрос относительно параллелизации. У меня есть цикл for, который я хочу выполнить параллельно, используя "многопроцессорность" в Python 3.2:
def computation:
global output
for x in range(i,j):
localResult = ... #perform some computation as a function of i and j
output.append(localResult)
В целом, я хочу выполнить это вычисление для диапазона от я = 0 до j = 100. Таким образом, я хочу создать несколько процессов, каждый из которых вызывает функцию "вычисление" с субдоменом всего диапазона. Любые идеи о том, как это сделать? Есть ли лучший способ, чем использование многопроцессорности?
Более конкретно, я хочу выполнить декомпозицию домена, и у меня есть следующий код:
from multiprocessing import Pool
class testModule:
def __init__(self):
self
def computation(self, args):
start, end = args
print('start: ', start, ' end: ', end)
testMod = testModule()
length = 100
np=4
p = Pool(processes=np)
p.map(yes tMod.computation, [(length, startPosition, length//np) for startPosition in range(0, length, length//np)])
Появляется сообщение об ошибке PicklingError. Любые идеи, что может быть проблемой здесь?