2011-09-19 13 views
8

ठीक है, मेरे दिमाग की प्रारंभिक बात यह सुनिश्चित करने के लिए थी कि pydispatcher या pubsub थ्रेड-सुरक्षित है या नहीं। पबूब पता लगाने के लिए थोड़ा मुश्किल या जटिल हो सकता है लेकिन पाइडिसपैचर को एहसास करना आसान लगता है। तब मुझे आश्चर्य हुआ कि एक पाइथन मॉड्यूल थ्रेड-सुरक्षित है या नहीं। कोई हेरिस्टिक?एक पायथन मॉड्यूल का मूल्यांकन कैसे करें थ्रेड-सुरक्षित है या नहीं?

उत्तर

1

एक सैद्धांतिक दृष्टिकोण से: कोई एल्गोरिदम नहीं है जो इसे मनमाने ढंग से प्रोग्राम के लिए करता है। यह halting problem की तरह है।

आप प्रयुक्त मॉड्यूल का निरीक्षण कर सकते हैं और जांच सकते हैं कि इन्हें थ्रेड सुरक्षित होने के लिए दिया गया है या नहीं। लेकिन थ्रेड सुरक्षा के लिए मॉड्यूल के बाइट कोड को जांचने का कोई सामान्य तरीका नहीं है।

+1

उन्होंने कहा "कोई हेरिस्टिक", वह एक सटीक, सामान्य समाधान की तलाश नहीं कर रहा है। मुझे यह भी संदेह है कि वह बाइटकोड को देखने के बारे में बात कर रहा था। – agf

2

निर्धारण अगर एक पुस्तकालय या आवेदन धागा सुरक्षित है, लेखक इनपुट के बिना के लिए, मैं सिंक्रनाइज़ करने धागे के लिए तंत्र के लिए दिखेगा: http://effbot.org/zone/thread-synchronization.htm या यह सूत्रण तरीकों में शामिल है कि: http://docs.python.org/library/threading.html

हालांकि, उस में से कोई भी आपको बता देंगे एक थ्रेड सुरक्षित तरीके से एपीआई का उपयोग कैसे करें। व्यावहारिक रूप से किसी भी थ्रेड ऑब्जेक्ट के अंदर भर दिया जा सकता है और थ्रेड सिंक्रनाइज़ेशन ऑब्जेक्ट्स का उपयोग करने के लिए संवाद किया जा सकता है।

पबब जैसे कुछ के लिए कोई ऐसा वर्ग बना सकता है जो एपीआई को लपेटता है और विशेष रूप से कतारों पर संचार करता है। यदि पबब उदाहरण के लिए डब्ल्यूएक्स के समान धागे में रहते थे, तो संदेशों को भेजने के लिए थ्रेडिंग एपीआई का उपयोग करके कतार में संदेशों को इंजेक्ट करने के लिए एक एपीआई बनाया जा सकता था। फिर एक पबब लूप या टाइमर कतार की निगरानी कर सकता है। फिर यह संदेश भेज देगा। पबब जैसे कुछ लपेटने वाले मुद्दों में से एक यह है कि कहीं भी इसे मतदान की आवश्यकता होगी। अगर मतदान टाइमर द्वारा किया जाता है तो इसे पारदर्शी बनाया जा सकता है। प्रत्येक थ्रेड को संदेश प्राप्त करने के लिए टाइमर आवंटित करना होगा यदि पबब उस धागे में नहीं रहता है। इसके लिए और अधिक सुरुचिपूर्ण दृष्टिकोण हो सकते हैं, लेकिन मुझे उनके बारे में पता नहीं है।