为什么不是';t python打印无限循环上方的语句?
此代码的输出仅为为什么不是';t python打印无限循环上方的语句?,python,python-3.x,printing,Python,Python 3.x,Printing,此代码的输出仅为bb。我想知道为什么没有打印cc,这意味着没有执行第三行,即print(“cc”)。 这是链接- Input=5尝试在此联机编译器中复制您的代码: 正如你所期望的那样 它没有在您的机器上打印cc的原因可能是打印输出的缓冲区存在一些问题或竞争条件。程序在无限循环中变忙,并保留要写入终端/控制台的缓冲区。print默认情况下不会刷新。在这里,您的第一次打印已排队,然后在调用input()时刷新。第二次打印已排队,但从未刷新 如果添加可选的flush参数,将获得预期的行为: prin
bb
。我想知道为什么没有打印cc
,这意味着没有执行第三行,即print(“cc”)
。
这是链接-
Input=5尝试在此联机编译器中复制您的代码: 正如你所期望的那样
它没有在您的机器上打印
cc
的原因可能是打印输出的缓冲区存在一些问题或竞争条件。程序在无限循环中变忙,并保留要写入终端/控制台的缓冲区。print
默认情况下不会刷新。在这里,您的第一次打印已排队,然后在调用input()
时刷新。第二次打印已排队,但从未刷新
如果添加可选的flush
参数,将获得预期的行为:
print(“bb”,flush=True)
s2=输入()
打印(“抄送”,刷新=真)
当0>-50时:
通过
打印(“qq”,flush=True)#由于无限循环,永远不会发生
代码运行正常:
print("bb")
s2=input()
print("cc")
while 0>-50:
pass
print("qq")
输出:
bb
my_input
cc
你的帖子肯定需要更多的关注,仅供参考,我无法重现你所说的内容。这是python代码。只执行第一个print语句。打印(“cc”)不是在等待您在第2行输入内容,可能您没有提供第2行预期的输入。我在控制台上尝试了您的代码,在提供输入后,会打印“cc”,这可能是一个缓冲问题,尽管如果输出要发送到终端,那么它应该是行缓冲的,因此您应该在输入字符串后看到
cc
。您可以通过在print(“cc”)
之后添加sys.stdout.flush()
来测试它。这是垃圾,不涉及竞争条件。这是标准的输出缓存,除非刷新输出,否则在程序正确结束之前不会显示输出缓冲区。当程序终止时,您希望stdout输出仍然会出现。不知何故,IDEONE的情况并非如此,也许它在杀死停止运行的程序之前就捕获了输出。
bb
my_input
cc