Jupyter笔记本电脑回车不起作用

时间:2018-12-16 21:32:35

标签: python jupyter-notebook

我正在尝试使用AccessToken null string CanRaiseEvents true bool + ClientConnectionId {1a523d10-43d8-48ed-a5b8-d6a909507f1e} System.Guid ConnectionString "Data Source = (LocalDB)\\MSSQLLocalDB; AttachDbFilename= C:\\Users\\somepath.mdf; Integrated Security = True;" string ConnectionTimeout 15 int Container null System.ComponentModel.IContainer Credential null System.Data.SqlClient.SqlCredential DataSource "(LocalDB)\\MSSQLLocalDB" string Database "C:\\USERS\\somepath.MDF" string + DbProviderFactory {System.Data.SqlClient.SqlClientFactory} System.Data.Common.DbProviderFactory {System.Data.SqlClient.SqlClientFactory} DesignMode false bool + Events {System.ComponentModel.EventHandlerList} System.ComponentModel.EventHandlerList FireInfoMessageEventOnUserErrors false bool PacketSize 8000 int ServerVersion "12.00.2000" string Site null System.ComponentModel.ISite State Open System.Data.ConnectionState StatisticsEnabled false bool WorkstationId "ASUSN56" string + Static members + Non-Public members end=\r来打印进度条,但是Jupyter笔记本的输出仍然有新行。

print()

输出:

for i in range(0, 100000):
    print(i, end='\r')

我正在Ubuntu 18.04上运行服务器,并在Mac上使用Chrome对其进行访问。如何使回车工作?

1 个答案:

答案 0 :(得分:1)

您的代码没有错。在普通的Ubuntu 18 / Python3中运行,其行为符合预期。

猜测这是某种缓冲问题(或Jupyter中的错误)。

根据发布的@unutbu链接,似乎只需要很小的时间就可以让Jupyter变形。

import time
for i in range(100000):
    print(i, end='\r')
    time.sleep(0)  # EDIT, somehow even this works too.
print("")  

很显然,如果您确实有大量输出(例如10万行),那么这远非理想。但是真正的延迟在于屏幕的刷新和重新绘制,而不是实际的time.sleep()

如果您在快速重复循环中执行这种操作,最好每隔几秒钟(或大约几秒钟)更新一次进度条。这可以通过检查时间增量来实现。