Jupyter输入、显示、打印执行顺序混乱

PZY*_*PZY 2 python pandas output jupyter-notebook

我使用的是 Jupyter,Python 版本是 3.5。在我的while循环中,执行顺序不正确;一次迭代的结果input显示在上一次迭代的最后一次之前。print这是我的代码。

from IPython.display import display
import pandas as pd
df = pd.DataFrame({'a':[1,2],'b':[3,4]})
while(True):
    a = input("please input:\n")
    display(df.head())
    print (a)
Run Code Online (Sandbox Code Playgroud)

执行结果为 执行截图

Nat*_*eks 5

我能够在 OSX 上的 Chrome 63 下重现该行为。我又添加了几个连续的print(a)语句,输入字段的结束位置是随机的:在它们之前、之后或之间。我怀疑每个显示和打印调用都会向服务器发送一个请求,但会异步等待其结果,因此input可能会在结果print(a)准备好之前再次调用。

这不是一个优雅的解决方案,但在解决了我的问题time.sleep(.02)后添加了一个小睡眠() 。print(a)