每次迭代时,For循环变慢

时间:2020-03-01 22:00:17

标签: python for-loop

我想在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

0 个答案:

没有答案