当前位置: 首页 > 知识库问答 >
问题:

过多使用print()会导致失败吗?

那利
2023-03-14

TL;DR:

Windows控制台中没有更新print()结果。在空闲时执行良好。即使Windows控制台没有更新,程序也在执行。

背景

count = 0
while True:
    print ("True")
    count += 1
    if count == 10:
            print ("XXXXXXXXX")
            count = 0

上面的代码只是一个测试文件,看看控制台中的打印是否在所有程序中停止,而不是我正在运行的程序。实际上,我的程序打印到控制台,看起来像:

line [10] >> Progress 05%

其中行[10]不是真的,但我在这里键入的只是向您展示print()在控制台窗口中发送到该行的内容。当我的程序继续时,它会增加:

line [10] >> Progress 06%
line [10] >> Progress 11%
.
.
.
line [10] >> Progress 50%

每次覆盖行[10]时。我使用ANSI转义字符和colorama相应地移动控制台光标:

打印(“progress”+prog+“%”)不再显示在控制台中时,发生了一些事情,因为最终会执行下一个Python代码:

行[11]>>程序完成...

我验证了放入文件夹的结果。因此,当控制台没有更新时,程序继续运行。

def check_queue(q, dates, dct):
    out = 0
    height = 0

    # print the initial columns and rows of output
    # each cell has a unique id 
    # so they are stored in a dictionary
    # then I convert to list to print by subscripting
    for x in range(0, len(list(dct.values())), 3):
        print("\t\t".join(list(dct.values())[x:x+3]))
        height +=1 # to determine where the top is for cursor

    while True:
        if out != (len(dates) * 2):
            try:
                status = q.get_nowait()
                dct[status[1]] = status[2]
                print('\x1b[1000D\x1b[' + str(height + 1) + 'A')

                # since there was a message that means a value was updated
                for x in range(0, len(list(dct.values())), 3):
                    print("\t\t".join(list(dct.values())[x:x+3]))

                if status[0] == 'S' or 'C' or 'F':
                    out += 1
            except queue.Empty:
                pass
    else:
        break

共有1个答案

孟子墨
2023-03-14

这很可能是一种错觉(可能是因为控制台中有最大的行数限制,然后新的行替换了第一行)。

您可以打印的数量绝对没有限制。您可以通过更改每次迭代的内容来验证这一点,例如,计算迭代次数的循环

import itertools
for i in itertools.count():
    print(i, "True")
 类似资料:
  • 我已经在我的gradle文件中启用了来使用ProGuard的特性来混淆代码,结果导致一些错误。 注意:动态创建的类实例有1个类强制转换。您可能会考虑显式保留提到的类和/或它们的实现(使用'-keep')。 警告:有309个未解析的类或接口引用。您可能需要添加丢失的库JAR或更新它们的版本。如果您的代码在没有丢失类的情况下运行良好,则可以使用'-dontwarn'选项抑制警告。(http://pro

  • 我正在尝试创建一个UDP服务器,它可以向所有向其发送消息的客户端发送消息。实际情况稍微复杂一点,但将其想象为聊天服务器是最简单的:以前发送过消息的每个人都会收到其他客户端发送的所有消息。 所有这些都是通过在单独的进程中完成的。(不过,所有网络连接都在同一个系统中,所以我认为UDP的不可靠性在这里不是问题。 服务器代码是这样一个循环(后面是完整的代码): 客户端代码也很简单——同样,这是稍微缩写的,

  • 我的maven版本和信息如下: 如前所述,通过Intellij运行时没有问题。但是当我通过intellij终端或普通终端运行maven命令时,我会得到以下错误。 Maven命令示例。 我的机器上甚至没有java SDK1.5。我可以得到一些帮助在哪里我应该改变这个版本到8这样我可以使一个maven构建请?多谢了。

  • 问题内容: 我正在编写一个PL / SQL过程,该过程需要动态生成一些查询,其中之一涉及使用来自查询的结果作为参数来创建临时表。 它可以正确编译,但是即使使用非常简单的查询,例如: IT抛出。如果我手动运行创建的查询,它将正确运行。在这一点上,我能够确定是什么导致了问题。 问题答案: 尝试丢掉“;” 从您立即执行的字符串内部。

  • 问题内容: 我添加了一个构建步骤来执行Python脚本。 在此脚本中,使用lint.Run(.. args)调用pylint来检查代码。 该脚本可以工作,但是最后,构建失败,并显示唯一的错误消息: 有人知道为什么会这样吗? 问题答案: 看来您的pylint执行退出状态为非零(缺少脚本,错误的选项…),也许您在退出脚本时引发了异常或

  • 问题内容: 在清理这个答案时,我对MySQL和s和存储过程有了一些了解,但感到震惊的是,尽管and 触发器可以修改数据,但它们似乎不会导致插入/更新失败(即验证)。在这种特殊情况下,我可以通过处理数据以导致主键重复的方式来使其工作,这在这种特殊情况下是有道理的,但在一般意义上不一定有意义。 这种功能在MySQL中可行吗?在其他RDBMS中(可悲的是,我的经验仅限于MySQL)?也许是样式语法? 问