SORU
20 EYLÜL 2008, CUMARTESİ


Devre dışı çıktı tamponlama

Çıkış arabelleği sys.stdout Python yorumlayıcısı varsayılan olarak etkin mi ?

Eğer cevap olumlu ise, onu devre dışı bırakmak için her yolu nedir ?

Öneriler şimdiye kadar:

  1. -u komut satırı anahtarı kullanın
  2. Wrap 3* *her yaz sonra basması bir nesne
  3. PYTHONUNBUFFERED env var Set
  4. sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)

Yürütme sırasında sys / sys.stdout Program aracılığıyla bazı genel bayrağını ayarlamak için başka bir yol var mı ?

CEVAP
20 EYLÜL 2008, CUMARTESİ


Magnus Lycka answer on a mailing list:

Bir bütün için tampon atlayabilirsiniz python süreci kullanarak "python -u" (veya#!/-u vb.) usr/bin/env python ya ayarı ortam değişkeni PYTHONUNBUFFERED.

Ayrıca sys yerine.stdout ile hangi sarıcı gibi bazı diğer stream her aramadan sonra temizler.

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'

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • hockeywebcasts

    hockeywebcas

    31 EKİM 2012
  • Kyletiv7

    Kyletiv7

    28 Mayıs 2007
  • tutvid

    tutvid

    19 AĞUSTOS 2006