Skip to content

print() in a loop doesn't output until the loop is done #825

Open
@jean

Description

@jean

I paste some code into the BPython REPL.
It looks like nothing happened, I don't even see the code I pasted, but it is running.

When I interrupt the loop, all this appears at once:

>>> import time
>>> 
>>> # seen_nodes = []
>>> # dupe_nodes = []
>>> counter = 0
>>> for row in col.get_rows():
...     node_id = row.get_property('node_id') 
...     if (node_id in seen_nodes) and (node_id not in dupe_nodes):
...         dupe_nodes.append(node_id)
...     elif node_id not in seen_nodes:
...         seen_nodes.append(node_id)
...     counter += 1
...     if not counter % 2:
...         print(f'{counter:6} | seen: {len(seen_nodes)}, dupes: {len(dupe_nodes)}', flush=True)
...         time.sleep(1)
... 
     2 | seen: 12530, dupes: 100
     4 | seen: 12530, dupes: 102
     6 | seen: 12530, dupes: 104
     8 | seen: 12530, dupes: 106
Traceback (most recent call last):
  File "<input>", line 10, in <module>
    time.sleep(1)
  File "/home/jean/.local/lib/python3.8/site-packages/bpython/curtsiesfrontend/coderunner.py", line 176, in sigint_handler
    raise KeyboardInterrupt()
KeyboardInterrupt

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions