为什么time.sleep会提前暂停?

时间:2011-11-07 00:05:35

标签: python time

我在Head First Programming的帮助下教我自己。

我想我可能会更喜欢调整他们的例子,但我想我错过了一些关于time.sleep的事。

我的代码是

print("Welcome to SuperBeans!")
time.sleep(3)
answer = input("Do you need a price now? y/n: ")

但是,在欢迎消息之后三秒钟暂停,它等待3分钟,然后显示消息和输入请求。我错过了什么?

此外,程序似乎在运行我定义的“轮询”功能时无限期挂起,而不会显示“轮询...”通知。我知道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 :(得分:2)

如上面的评论中所讨论的,Python输出正在被缓冲,因此程序运行(并在正确的时间睡眠等),但是你暂时看不到输出。

如果您从非标准控制台运行Python,则需要将“-u”选项传递给Python以禁用缓冲。即:

python -u foo.py

答案 1 :(得分:0)

关于为什么poll()函数挂起,这可能是因为它停留在while循环中。

所以问题:get_price()是否会返回严格大于4.74的内容? (提示:打印返回的值)