【问题标题】:Make os.system('cls') quicker使 os.system('cls') 更快
【发布时间】:2020-04-04 01:52:28
【问题描述】:

考虑以下代码:

import time
import os
for a in range(10, 0, -1): # total time is actually 1 second. no float allowed for arg 3.
    print(a)
    time.sleep(0.X) #unknown time...
    os.system('cls')

在程序开始时,a 每次减少 1/10 秒。

问题: os.system('cls') 的处理时间超过 0.1 秒。 有什么办法可以加快速度?

【问题讨论】:

  • 为什么在 for 循环之外和内部(作为计数器)都有一个 int 变量(循环变量将覆盖外部 a 变量)?上面的 for 循环也不会运行,因为您的 (10, 0, 1) 表示“从 10 开始,在 0 停止,并且每一步步进 1”。我想你的意思是 -1?
  • time.sleep 要休眠多长时间(以秒为单位)?为什么不知道?
  • @user12055579 Time.sleep(x) 未知,因为我不知道 os.system(cls) 需要多长时间来处理。我只知道它超过一毫秒,因为毫秒不是毫秒
  • 您不会立即清除屏幕(或打印),因此如果您希望此循环每十分之一秒运行一次,那么您应该使用适当的时钟而不是试图让您的拥有time.sleep 的时钟。 This other Q&A 有一些例子。
  • @kaya3 是否可以将其重新表述为答案?将不胜感激!谢谢!

标签: python-3.x os.system


【解决方案1】:

实际上,您可以将 cmd 窗口变小以减少处理时间。有用! 生成和清除的像素更少,使其成为理想的选择。

def count():
    for a in range(10, 0, -1):
        print(a)
        time.sleep(0.1) #I know I am breaking the DO NOT USE TIME.SLEEP rule.
        os.system('cls')
count()

如上所述,使用 time.sleep 永远不可靠,但如果你缩小窗口,它就会接近。 (我认为它不必在现场。)

【讨论】:

    【解决方案2】:

    我知道你的问题是 for 循环运行超过 1 秒,因为 os.system('cls') 不是瞬时的:

    您可以使用 Python 中的 timeit 模块对此进行测试:

    没有os.system('cls')

    import time
    import timeit
    import os
    start = timeit.default_timer()
    for a in range(10, 0, -1): # total time is actually 1 second. no float allowed for arg 3.
        print(a)
        time.sleep(0.1) #unknown time...
    stop = timeit.default_timer()
    print('Time: ', stop - start)  
    

    输出:

    10
    9
    8
    7
    6
    5
    4
    3
    2
    1
    Time:  1.0021432
    

    os.system('cls'):

    Time:  1.7151739000000001
    

    你无法解决这个问题,因为即使没有os.system('cls'),它也需要超过 1 秒。函数os.system('cls') 本身已经需要大约0.1649219 秒来执行。你不能让 Python 库函数更快。

    【讨论】:

    • @ user 12055579 这很有帮助,我在 cmd 中运行它,我想清除屏幕以每次显示不同的输出。还是谢谢!
    • 好的,这有点晚了,但我实际上找到了自己的解决方案:将cmd窗口变小。很奇怪。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-06
    • 2019-10-17
    • 1970-01-01
    • 2013-03-09
    • 2019-06-12
    相关资源
    最近更新 更多