【问题标题】:Jupyter input, display, print execution order is chaoticJupyter输入、显示、打印执行顺序混乱
【发布时间】:2018-01-11 01:41:57
【问题描述】:

我正在使用 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)

执行结果是

【问题讨论】:

  • 您的代码运行良好,并且在我的 jupyter 上以正确的顺序输出。可能是你开发环境的问题。
  • 如果是你开发环境的问题,很难解决。
  • print(a) 之后尝试del a 并删除\n
  • @virtualdvid,它不起作用。

标签: python pandas output jupyter-notebook


【解决方案1】:

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

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

【讨论】:

  • 是的,显示和打印似乎是异步的。
【解决方案2】:

这是一个已知的 Jupyter 问题:

https://github.com/jupyter/notebook/issues/3159

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    • 2015-07-26
    • 2014-07-13
    相关资源
    最近更新 更多