2009-09-02 15 views
13

मैं एक बफर वर्ग के साथ एक फ़ाइल की तरह इंटरफेस प्रदान करता है लिखा है read, write, seek, tell, स्मृति में एक साधारण स्ट्रिंग के लिए flush तरीकों। बेशक यह अपूर्ण है (उदाहरण के लिए मैंने readline नहीं लिखा था)। इसका उद्देश्य कुछ बाहरी डेटा स्रोत से पृष्ठभूमि धागे से भरा जाना है, लेकिन उपयोगकर्ता को इसे फ़ाइल की तरह व्यवहार करने दें। मुझे उम्मीद है कि इसमें अपेक्षाकृत कम मात्रा में डेटा हो सकता है (शायद 50 के अधिकतम)अजगर फ़ाइल की तरह बफर वस्तु

क्या इसे स्क्रैच से लिखने के बजाय ऐसा करने का बेहतर तरीका है?

उत्तर

19

आप मानक पायथन मॉड्यूल StringIO या cStringIO का उपयोग इन-मेमोरी बफर प्राप्त करने के लिए कर सकते हैं जो file interface लागू करता है।

cStringIO सी में लागू किया गया है, और तेज़ होगा, इसलिए यदि संभव हो तो आपको उस संस्करण का उपयोग करना चाहिए।

यदि आप पाइथन 3 का उपयोग कर रहे हैं तो आपको और io.BytesIO के बजाय के बजाय io.StringIO का उपयोग करना चाहिए।

+0

मुझे लगता है कि मैं यही देख रहा हूं। लेकिन क्या ये कक्षाएं थ्रेड-सुरक्षित हैं? मेरे पास अलग पाठक और लेखक धागे होंगे। – djs

+0

पायथन जीआईएल का मतलब है कि थ्रेड सुरक्षा एक समस्या होने की संभावना नहीं है, क्योंकि दो धागे एक ही समय में निष्पादित नहीं होते हैं। –

+9

यह थ्रेड-सुरक्षित नहीं बनाता है। अगर ऐसा होता है, तो हमें सिंगल-कोर प्रोसेसर पर थ्रेड सुरक्षा की आवश्यकता नहीं होगी। – Kylotan

6

मुझे लगता है कि आप StringIO देख रहे हैं।

संबंधित मुद्दे