I am testing multiple algorithms, and want to be able to add algorithms quickly. To do so I want to put algorithms in a list as a string, and then use the string to call the method. I’m also doing a simple timing of the algorithms and don’t want to duplicate the timer code between each method.
For example:
testData = (testSet1, testSet2, testSet3,...,testSetN)
methods = ("method1", "method2", "method3",...,"methodN")
for x in testData:
for y in methods:
startTime = time.time()
#call y with x as parameter life
endTime = time.time()
I can’t use getattr(y, x) because everything is written as a simple script. Is there an easy way to do this, or will I need to call each method?
Advertisement
Answer
Use a dictionary
testData = (testSet1, testSet2, testSet3,...,testSetN)`
methods = {"method1":method1, "method2":method2, "method3":method3,...,"methodN":methodN}
for x in testData:
for y in methods.keys():
startTime = time.time()
methods[y](x)
endTime = time.time()