Python 为什么时间很早就停止了睡眠?

Python 为什么时间很早就停止了睡眠?,python,time,Python,Time,我正在用头先编程的方法自学python 我想我可能会根据自己的喜好调整他们的例子,但我想我错过了一些关于时间的东西。睡眠 我的代码是 print("Welcome to SuperBeans!") time.sleep(3) answer = input("Do you need a price now? y/n: ") 但是,它没有在欢迎消息之后暂停3秒钟,而是等待3分钟,然后显示消息和输入请求。我错过了什么 此外,在运行我定义的“poll”函数时,程序似乎会无限期挂起,而不会显示“poll

我正在用头先编程的方法自学python

我想我可能会根据自己的喜好调整他们的例子,但我想我错过了一些关于时间的东西。睡眠

我的代码是

print("Welcome to SuperBeans!")
time.sleep(3)
answer = input("Do you need a price now? y/n: ")
但是,它没有在欢迎消息之后暂停3秒钟,而是等待3分钟,然后显示消息和输入请求。我错过了什么

此外,在运行我定义的“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()函数会挂起?

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


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

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

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

python -u foo.py

当我运行你的第一块代码时,它会休眠大约三秒。是标准缓冲区没有被刷新这是调用时间的正确方法。休眠和你的代码片段在OS X上工作得很好。如果你单独运行它们,而不使用程序的其余代码,它们对你有用吗?嗯。。。古怪的我用nppexec从记事本++控制台运行它。我只是试着在空闲状态下运行,效果很好。我想这解决了一个问题,新的问题是为什么它不能从npp正常工作?@Daniel Ball:当你以交互方式运行它时,stdin/stdout是行缓冲的,否则会使用固定的缓冲。比较
python-c'import系统;打印sys.stdin.isatty();打印sys.stdin.isatty()。问题是,虽然它在while循环中,但它没有打印“polling…”。我把它放在nppexec的运行行中,它工作得很好,谢谢!