I want to turn off output buffering

Asked 2 years ago, Updated 2 years ago, 19 views

sys.stdout is buffering by default It turns weird when I do multi-threading How do I turn off buffering?

python stdout buffered

2022-09-22 22:27

1 Answers

Run the Python script like python -u <file> when running it

Setting the environment variable PYTHONUNBUFFERED prevents buffering.

import os
os.environ('PYTHONUNBUFFERED') = '1'

I made a class that flushes whenever I write How to replace sys.stdout with this object.

class Unbuffered(object):
   def __init__(self, stream):
       self.stream = stream
   def write(self, data):
       self.stream.write(data)
       self.stream.flush()
   def __getattr__(self, attr):
       return getattr(self.stream, attr)

import sys
sys.stdout = Unbuffered(sys.stdout)
print 'Hello'


2022-09-22 22:27

If you have any answers or tips


© 2024 OneMinuteCode. All rights reserved.