並列Python(PP)とクラスの処理に関して、インターネット上にチュートリアルやガイドがどれほど少ないかを知ってショックを受けました。同じクラスのインスタンスをいくつか開始し、その後、いくつかの変数を取得したいという問題が発生しました(たとえば、5つのデータファイルを並行して読み取り、それらのデータを取得します)。これが私の問題を説明するための簡単なコードです:
import pp
class TestClass:
def __init__(self, i):
self.i = i
def doSomething(self):
print "\nI'm being executed!, i = "+str(self.i)
self.j = 2*self.i
print "self.j is supposed to be "+str(self.j)
return self.i
class parallelClass:
def __init__(self):
job_server = pp.Server()
job_list = []
self.instances = [] # for storage of the class objects
for i in xrange(3):
TC = TestClass(i) # initiate a new instance of the TestClass
self.instances.append(TC) # store the instance
job_list.append(job_server.submit(TC.doSomething, (), ())) # add some jobs to the job_list
results = [job() for job in job_list] # execute order 66...
print "\nIf all went well there's a nice bunch of objects in here:"
print self.instances
print "\nAccessing an object's i works ok, but accessing j does not"
print "i = "+str(self.instances[2].i)
print "j = "+str(self.instances[2].j)
if __name__ == '__main__' :
parallelClass() # initiate the program
便宜上コメントを追加しました。私はここで何が間違っているのですか?