私の Python コードでは、次の問題があります。同じオブジェクトを何度もコピーしてから、各コピーをそれを変更する関数に渡す必要があります。私は copy.deepcopy を試しましたが、実際には計算コストが高いため、 itertools.repeat() を試しましたが、その後オブジェクトを変更する必要があるため、それは悪い考えでした。そこで、同じ属性を持つ新しいオブジェクトを返すだけでオブジェクトをコピーする簡単なメソッドを作成しました。
def myCopy(myObj):
return MyClass(myObj.x, myObj.y)
問題は、これも非常に非効率的であることです。約 6000 回実行する必要があり、10 秒以上かかります。それで、それを行うためのより良い方法はありますか?
コピーして変更するオブジェクトはテーブルで、次のように作成されます。
def initialState(self):
table = []
[table.append(Events()) for _ in xrange(self.numSlots)]
for ei in xrange(self.numEvents - 1):
ei += 1
enr = self.exams[ei]
k = random.randint(0, self.numSlots - 1)
table[k].Insert(ei, enr)
x = EtState(table)
return x
class Event:
def __init__(self, i, enrollment, contribution = None):
self.ei = i
self.enrollment = enrollment
self.contribution = contribution
class Events:
def __init__(self):
self.count = 0
self.EventList = []
def getEvent(self, i):
return self.EventList[i].ei
def getEnrollment(self, i):
return self.EventList[i].enrollment
def Insert(self, ei, enroll = 1, contribution = None):
self.EventList.append(Event(ei, enroll, contribution))
self.count += 1
def eventIn(self, ei):
for x in xrange(self.count):
if(self.EventList[x].ei == ei):
self.EventList[x].enrollment += 1
return True
return False