我可以选择time.sleep(300),看看时间在跑吗? 而不是观看直到它完成的屏幕?
答案 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)
给你一些类似的东西:
注意:要测试大量数据,例如10,000只是更改sleep_counter参数并将sleep(1)
更改为类似sleep(0.01)
的内容,您会看到它倒计时快了100倍。