我想在for循环中执行各种股票数据模拟。
在开始循环之前,我初始化了Simulation
类的对象,该对象在调用其query_stock_information()
方法之后,存储了仿真所需的所有相关数据。然后,我遍历各种服务级别,并通过调用该类的simulate()
方法在每次迭代中执行完全相同的模拟(使用完全相同的数据量并遵循完全相同的操作,数字只是有所不同) 。
但是,每次迭代的仿真速度都会变慢(第一次迭代大约需要6分钟,最后一次迭代需要30分钟以上)。这让我感到惊讶,因为在CPU和内存方面应该没有区别。在仿真过程中,只是全局结果列表会变大,但实际上数据量并没有那么大。
这是模拟的一些伪代码:
class Simulation:
(...)
def query_stock_information(self):
# request stock data from data warehouse and save in self.stock_data
def simulate(self, servicelevel):
self.results = []
# execute simulation with servicelevel input and stock information from self.stock_data
# save results as items in self.results
simulation = Simulation()
simulation.query_stock_information()
results = []
for servicelevel in np.arange(0.800, 1.000, 0.005):
print("Start simulation (servicelevel={})".format(servicelevel)
simulation.simulate(servicelevel)
results.extend(simulation.results) # here i add 2500 (,10) pandas series per iteration