'Why does the output buffering of calling print with end option not occur in Jupyter notebook? [duplicate]

import time

for i in range(20):
    time.sleep(1)
    print(i, end = ' ')

When I ran the above code in Python, I expected 0, 1, 2, ..., 19 to be printed every second. But actually 0 1 2 3 ... 19 was printed after 20 seconds. (I ran the script on the command prompt.)

I learned from the answer https://stackoverflow.com/a/107717/2091585 that this is caused by buffering and I can prevent this by adding

sys.stdout.flush()

after calling the print function.

On the other hand, if I ran it on Jupyter notebook, 0, 1, 2, and so on are printed every second as I expected.

Why doesn't the buffering occur in Jupyter notebook?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source