我们怎样才能在睡眠运行时看到屏幕上的运行时间

时间:2015-01-20 17:29:53

标签: python-2.7

我可以选择time.sleep(300),看看时间在跑吗? 而不是观看直到它完成的屏幕?

1 个答案:

答案 0 :(得分:1)

如果精度不是太重要,你可以这样做:

from __future__ import print_function
from time import sleep

def sleep_counter(x):
    for i in range(x, 0, -1):
        print(str(i) + " seconds remaining in sleep.....", end='\r')
        sleep(1)
    print("All done...............................")

sleep_counter(300)

但是,你应该记住,每一秒睡眠之间的打印会消耗一些微小的时间,所以实际上它会比你指定的数字长一点(但可能不够长,不足以引起注意)为了大多数目的)。

end='\r'用于替换打印自动放在每行末尾的新行字符,以便每次都替换该行。

注意:线路替换似乎不适用于IDLE,但在OS控制台中运行时可以正常工作。


或稍微复杂一点的版本,将剩余时间格式化为小时,分钟和秒:

from __future__ import print_function, division
from time import sleep

def sleep_counter(x):
    for i in range(x, 0, -1):
        hrs, mins, secs = 0, 0, 0

        if i > 60:
            mins = i / 60
            if mins > 60:
                hrs = i / 60 / 60
                mins = (hrs - int(hrs)) * 60
            secs = int((mins - int(mins)) * 60)
        else:
            secs = i

        hrs, mins, secs = str(int(hrs)), str(int(mins)), str(secs)

        print(hrs + " hrs " + mins + " mins " + secs + " secs remaining.....", end='\r')
        sleep(1)
    print("I'm awake.......................................")

sleep_counter(3665)

给你一些类似的东西:

enter image description here

注意:要测试大量数据,例如10,000只是更改sleep_counter参数并将sleep(1)更改为类似sleep(0.01)的内容,您会看到它倒计时快了100倍。