2009-09-02 6 views
13

나는 메모리에있는 간단한 문자열에 read, write, seek, tell, flush 개의 메소드와 비슷한 파일 형식 인터페이스를 제공하는 버퍼 클래스를 작성했습니다. 물론 그것은 불완전합니다 (예 : readline을 쓰지 않았습니다). 목적은 외부 데이터 소스의 배경 스레드로 채워지지만 사용자가 파일처럼 취급하게하는 것입니다. 상대적으로 적은 양의 데이터가 포함될 것으로 예상됩니다 (최대 50K).파이썬 파일과 같은 버퍼 객체

처음부터 쓰는 대신 더 나은 방법이 있습니까?

답변

19

표준 파이썬 모듈 StringIO 또는 cStringIO을 사용하여 file interface을 구현하는 인 메모리 버퍼를 얻을 수 있습니다.

cStringIO은 C로 구현되어 있으며 더 빠를 수 있으므로 가능한 경우 해당 버전을 사용해야합니다. 파이썬 3를 사용하는 경우

당신은 대신 StringIOio.StringIOio.BytesIO 대신 cStringIO 사용해야합니다.

+0

나는 그것이 내가 찾고있는 것이라고 생각한다. 하지만이 클래스는 스레드로부터 안전한가요? 별도의 리더 및 라이터 스레드가 있습니다. – djs

+0

Pythons GIL은 두 스레드가 동시에 실행되지 않으므로 스레드 안전성이 문제가 될 가능성이 거의 없음을 의미합니다. –

+9

그렇다고 스레드로부터 안전하지는 않습니다. 그렇다면 단일 코어 프로세서에서 스레드 안전성이 필요하지 않습니다. – Kylotan

6

나는 StringIO을 찾고 있을지도 모른다고 생각합니다.

관련 문제