Supponiamo di avere un po 'di StringIO
(da cStringIO
). Voglio leggere tampone da esso fino a quando si incontra un po 'di carattere/byte, dire 'Z', quindi:modo veloce per leggere da StringIO fino a quando non si incontra qualche byte
stringio = StringIO('ABCZ123')
buf = read_until(stringio, 'Z') # buf is now 'ABCZ'
# strinio.tell() is now 4, pointing after 'Z'
Qual è modo più veloce per fare questo in Python? Grazie
Ottima soluzione! Affronta il pesante sovraccarico di Python sulle chiamate di funzione. L'unico svantaggio è che si tiene in memoria un oggetto 'datalist' ridondante. È possibile riscrivere questo codice con il generatore anziché con la funzione ('join' accetta gli iteratori), quindi non ci saranno oggetti temporanei ridondanti in memoria. – ovgolovin
Ma la versione del generatore risulta un po 'più lenta: http://ideone.com/dQGe5 (Se una stringa è grande (1 mln di simboli), la versione del generatore è un po' più veloce). – ovgolovin
A proposito, perché hai scelto blocchi di simboli "256"? (perché non '512' o' 1024'?) – ovgolovin