का उपयोग कर डेटा साझा करना मैंने पायथन में आईपीसी के लिए एक कुशल समाधान की खोज करते समय ज़ीरोम पर ठोकर खाई; मेरे पास कुछ पाइथन प्रक्रियाएं हैं जिन्हें मास्टर प्रक्रिया में एक नियम से डेटा पर कुछ सीपीयू गहन प्रसंस्करण करने की आवश्यकता है। ये कार्यकर्ता केवल ताना से पढ़ते हैं, केवल मास्टर प्रक्रिया ही नियम को बदल सकती है। ताना में डेटा बदल जाएगा, लेकिन परमाणु रूप से मास्टर प्रक्रिया के माध्यम से।pyzmq शून्य-प्रति
मैं आदर्श रूप से साझा स्मृति का एक टुकड़ा रखता हूं जहां सभी कार्यकर्ता प्रक्रियाएं स्कूल को पढ़ सकती हैं, दुर्भाग्यवश यह पाइथन में संभव नहीं लगती है।
redis या मेम्कैश की तरह एक संचय का उपयोग करने overkill की तरह लगता है तो एक विकल्प के रूप में मैं चाहता हूँ (न सिर्फ कुछ मैं पहले से ही देशी प्रारूप में स्मृति में कहीं साझा करने के लिए उपयोग करने के लिए टीसीपी & अचार बनाने चाहते हैं) ..
एक ज़ीरोमक आईपीसी सॉकेट का उपयोग कर श्रमिकों की सदस्यता लेने के लिए मास्टर dict से प्रासंगिक डेटा को धक्का देने के लिए ज़ीरोमक का उपयोग करने के लिए। इसका मतलब यह होगा कि मैं (दुर्भाग्य से) मास्टर मास्टर से प्रासंगिक भाग को क्रमबद्ध करना होगा (msgpack का उपयोग कर?) और फिर इसे zmq संदेश का उपयोग करके दबाएं। मैंने पढ़ा है कि यह शून्य-प्रतिलिपि का उपयोग करके ऐसा करना संभव है ताकि मैं डेटा को दो बार कॉपी न कर सकूं, क्या यह कुछ ऐसा होता है जो स्वचालित रूप से होता है यदि मैं अपनी msgpacked बाइनरी स्ट्रिंग पर कॉपी = गलत का उपयोग करता हूं? और क्या यह मेरी समस्या के लिए जाने का तरीका है या क्या आप लोगों के पास युक्तियाँ हैं कि इसे और अधिक कुशलता से कैसे निपटें?
धन्यवाद!
Martijn
जानकारी के लिए धन्यवाद, शायद दोनों संदेश होंगे> 10 केबी और <10 केबी इसलिए मुझे निश्चित रूप से कुछ बेंचमार्किंग करना होगा .. क्या कोई सहमति है कि पाइथन प्रक्रियाओं के बीच आईपीसी करने का सबसे प्रभावी तरीका क्या है ? बस मल्टीप्रोसेसिंग पैकेज का उपयोग करें और एक पाइप का उपयोग करें? – Martijnh
आईपीसी करने के कई तरीके हैं, और वर्कलोड के आधार पर विभिन्न उपकरणों के अलग-अलग फायदे हैं। मुझे नहीं लगता कि वहां बहुत आम सहमति है, लेकिन ज़ीरोएमक अपेक्षाकृत लोकप्रिय है। – minrk