Python String Buffer Tanımlama ve Flush

Python yazılımı içinde string buffer tanımlama ihtiyacı olursa bu parametreyi tanımlarken bazı durumlara dikkat etmek gerekir. String Buffer özelliği Buffer’da değiştirilebilir bir karekter dizisi oluşturur. Oluşturulan dizi String gibidir fakat ondan farkı değişebilir olmasıdır. Hafızada her seferinde yeni bir alan açılmadan var olan alan üzerinde değişiklik yapılabilir. StringBuffer dizisine (array) bileşen ekleyen, bileşen silen, uzunluğu değiştiren ve başka işleri yapan çok sayıda metot vardır. StringBuffer thread-safe yani synchronized ‘tır. Bu durum da StringBuffer’ı thread’li işlemlerde kullanılmasını güvenli yapar. String buffer şu şekilde tanımlanır.

from ctypes import create_string_buffer
item = create_string_buffer(buffer size)

Ör: item = create_string_buffer(128)

Bu şekilde tanımladığınızda bazı sorunlar ile karşılaşabilirsiniz. Aşağıdaki gibi tanımlamanız daha sorunsuz bir sonuç ortaya çıkaracaktır.

item = create_string_buffer('\000' * 128)

Bu tanım string buffer için yeterlidir fakat gönderdiğiniz değişken tipi tutarlı olmazsa Type Error hatası alabilirsiniz. Bunu da düzeltmek için aşağıdaki halini kullanabilirsiniz. 

create_string_buffer(('\000' * bufferSize).encode())

ör:

item = create_string_buffer(('\000' * 128).encode())

Python orjinal buffer size'a bakmak için aşağıdaki komut kullanılabilir.

import io
print('Original buffer size:', io.DEFAULT_BUFFER_SIZE)

Çıktısı:

Original buffer size: 8192

Buffer'daki bilgileri silmek için

import sys
sys.stdout.flush()

Kodu kullanılabilir. Bu kod buffer'da bulunan verinin silinmesini sağlar, tabiki çıkış yönündeki veriyi silecektir. Bir print işlemi yapıyorsanız bufferda kalan veri böylece silinmiş olur. Bir print çıktısı sonrası buffer silinmek isteniyorsa

print(veri, end =' ', flush = True)

Şeklinde de yazdırma sonrası buffer silinebilir.

Google