python或Pandas是否缓存结果?

python或Pandas是否缓存结果?,python,python-3.x,pandas,ipython,Python,Python 3.x,Pandas,Ipython,在使用熊猫数据帧时,我注意到了一件最奇怪的事情。在相同代码的第一次和第二次运行之间创建数据帧的时间大大缩短 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(

在使用熊猫数据帧时,我注意到了一件最奇怪的事情。在相同代码的第一次和第二次运行之间创建数据帧的时间大大缩短

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中计时,则会得到类似的结果

我的观点是,第一次运行可能会花时间转换为.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)

您的程序是否存储在文件中?是!这有什么区别吗?我想你也应该给它贴上iPython的标签。这很有趣,因为我以前从未在
timeit
上看到过该消息,所以我不确定它将缓存哪个部分(也不知道如何跟踪),但我可以重现您的结果。这可能只是.pyc文件第一次未编译,而且每次编译之后都会出现吗?如果你创建了一个10倍的循环,但只运行一次代码会怎么样?@pshep123我没有得到u?你能解释一下吗?我只是运行上面的代码。这是我的输出
循环时间:0.03665304183959961循环时间:0.0012547969818115234循环时间:0.0006182193756103516。循环时间:0.0004937648773193359循环时间:0.0005068779991699219循环时间:0.0005292892456054688
时间在不断改进,并在某个值上饱和。我希望能帮上忙,但背后的原因远远超过我的工资等级!祝你好运。