私は (Python 3.2 を使用して) Python を初めて使用し、並列化に関して質問があります。Python 3.2 で「マルチプロセッシング」を使用して並列に実行したい for ループがあります。
def computation:
global output
for x in range(i,j):
localResult = ... #perform some computation as a function of i and j
output.append(localResult)
全体として、i=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 に関するエラー メッセージが表示されます。ここで何が問題になる可能性がありますか?