为什么time.sleep提前暂停?
我正在自学Python,参考的是《Head First Programming》这本书。
我想把他们的例子稍微改得更符合我的口味,但我觉得我对time.sleep这个东西理解得不太对。
我的代码是
print("Welcome to SuperBeans!")
time.sleep(3)
answer = input("Do you need a price now? y/n: ")
但是,欢迎信息显示后,它不是暂停三秒钟,而是等了三分钟,然后才显示消息和输入请求。我到底漏掉了什么呢?
另外,当我运行我定义的“poll”函数时,程序似乎一直卡在那里,根本没有显示“polling...”的提示。我知道get_price()是正常工作的,因为它在其他地方能打印出来...
def poll():
price = 99.99
print(price)
while price > 4.74:
print("Polling...")
price = get_price()
time.sleep(5)
print("Buy!")
所以,为什么欢迎信息的暂停时间比我预期的要长,为什么poll()函数又会卡住呢?
2 个回答
0
关于为什么 poll()
函数会卡住,这可能是因为它一直在 while
循环里转。
那么问题来了:get_price()
这个函数有没有返回过比 4.74
大的值呢?(提示:可以打印出返回的值来看看)
3
如上面评论所讨论的,Python的输出是被缓存的,这意味着程序在运行时(比如等待正确的时间等)其实是正常工作的,但你可能一段时间内看不到输出。
如果你是在一个非标准的控制台运行Python,你需要给Python加上“-u”这个选项来关闭缓存。也就是说:
python -u foo.py