2009-09-02 21 views
13

ho scritto una classe di buffer che fornisce un'interfaccia simile a file con read, write, seek, tell, flush metodi per una semplice stringa in memoria. Ovviamente è incompleto (ad es. Non ho scritto readline). Lo scopo è quello di essere riempito da un thread in background da qualche fonte di dati esterna, ma lasciare che un utente lo tratti come un file. Mi aspetto che contenga una quantità relativamente piccola di dati (forse 50K max)python buffer di file come oggetto

C'è un modo migliore per farlo invece di scriverlo da zero?

risposta

19

È possibile utilizzare i moduli Python standard StringIO o cStringIO per ottenere un buffer in memoria che implementa lo file interface.

cStringIO è implementato in C e sarà più veloce, quindi è consigliabile utilizzare tale versione, se possibile.

Se si utilizza Python 3, è necessario utilizzare io.StringIO anziché StringIO e io.BytesIO anziché cStringIO.

+0

Penso che sia quello che sto cercando. Ma queste classi sono sicure da thread? Avrò dei thread separati per lettori e scrittori. – djs

+0

Pythons GIL significa che è altamente improbabile che la sicurezza del thread sia un problema, poiché due thread non vengono eseguiti contemporaneamente. –

+9

Questo non lo rende thread-safe. Se lo facesse, non avremmo bisogno della sicurezza del thread sui processori single-core. – Kylotan

6

Penso che tu stia cercando StringIO.

Problemi correlati