python或Pandas是否缓存了结果?

时间:2017-05-10 17:31:47

标签: python python-3.x pandas ipython

我在使用pandas DataFrame时注意到的最奇怪的事情之一。在相同代码的第1次和第2次运行之间创建DataFrame的时间大大减少。

L = list('ABCDEFGH')*20000
min_length = 10000
data_dict = {k: np.random.randint(10, size=min_length) for k in L}
start = time.time()
df = pd.DataFrame({k:v[:min_length] for k,v in data_dict.items()})
print('loop time : ', time.time() - start)

第一次运行的时间

loop time : 0.05926999

当我重新运行上面的代码时

loop time : 0.00090622

任何机构都可以解释刚刚发生了什么吗?
pandas或python缓存结果了吗?
如果你在ipython中计时会得到像this

这样的结果

1 个答案:

答案 0 :(得分:0)

我的观点是,它可能是第一次运行的问题,花时间转换为运行时的.pyc文件。我真的不是专家,这真的不是一个答案,而是更多的故障排除步骤。

尝试运行它,看看第一次迭代是否比后续迭代长得多。

L = list('ABCDEFGH')*20000
min_length = 10000
data_dict = {k: np.random.randint(10, size=min_length) for k in L} 

for i in range(10):
    start = time.time() 
    df = pd.DataFrame({k:v[:min_length] for k,v in data_dict.items()})
    print('loop time : ', time.time() - start)