2009-09-02 35 views
13

Tôi đã viết một lớp đệm cung cấp giao diện giống như Tệp với các phương thức read, write, seek, tell, flush cho một chuỗi đơn giản trong bộ nhớ. Tất nhiên nó không đầy đủ (ví dụ: tôi không viết readline). Mục đích của nó là được lấp đầy bởi một chuỗi nền từ một số nguồn dữ liệu bên ngoài, nhưng hãy để người dùng xử lý nó như một tệp. Tôi hy vọng nó chứa một lượng dữ liệu tương đối nhỏ (có thể là 50K tối đa)đối tượng đệm giống như tệp python

Có cách nào tốt hơn để làm điều này thay vì viết nó từ đầu?

Trả lời

19

Bạn có thể sử dụng các mô-đun Python chuẩn StringIO hoặc cStringIO để lấy bộ đệm trong bộ nhớ thực hiện file interface.

cStringIO được triển khai bằng C và sẽ nhanh hơn, vì vậy bạn nên sử dụng phiên bản đó nếu có thể.

Nếu bạn đang sử dụng Python 3, bạn nên sử dụng io.StringIO thay vì StringIOio.BytesIO thay vì cStringIO.

+0

Tôi nghĩ đó là những gì tôi đang tìm kiếm. Nhưng những lớp này có an toàn không? Tôi sẽ có những người đọc và người viết riêng biệt. – djs

+0

Pythons GIL có nghĩa là sự an toàn của luồng không có khả năng là một vấn đề, vì hai luồng không thực thi cùng một lúc. –

+9

Điều đó không làm cho chuỗi an toàn. Nếu nó đã làm, sau đó chúng tôi sẽ không cần an toàn thread trên bộ xử lý lõi đơn. – Kylotan

6

Tôi nghĩ bạn có thể đang tìm kiếm StringIO.

Các vấn đề liên quan