2012-03-31 29 views
7

मैं एक बहु-प्रक्रिया अजगर आवेदन (प्रक्रियाओं uwsgi से उत्पन्न हुए हैं), रैम में चर की दुकान तो पढ़ सकते हैं और कई विभिन्न प्रक्रियाओं से वे चर को अपडेट करना होगा कि है। मुझे पता है कि बहुत सारे कैशिंग विकल्प उपलब्ध हैं, लेकिन जो कुछ मैंने पाया है वह केवल तारों को स्टोर कर सकता है। यह अलग अजगर प्रक्रियाओं कभी इसे परिवर्तित करने या यहाँ तक कि यह कॉपी किए बिना ही आभासी स्मृति डेटा का उपयोग करने के लिए, और इस तरह का हिस्सा संभव है?पाइथन प्रक्रियाएं लाइव ऑब्जेक्ट्स साझा कर सकती हैं?

+0

[पाइथन में सिस्टम वी साझा स्मृति की संभावित डुप्लिकेट]] (http://stackoverflow.com/questions/2219604/system-v-shared-memory-in-python) – Amber

+0

[प्रसंस्करण] देखें (http: //pypi.python.org/pypi/processing) पैकेज। – Keith

+0

मैंने पहले से ही उन दोनों की जांच की है। sysv_ipc केवल तारों को संग्रहीत करता है, और 'प्रसंस्करण' काम नहीं करेगा क्योंकि प्रक्रियाएं यूवीजीआई द्वारा बनाई गई हैं, पायथन नहीं। –

उत्तर

6

POSH, Python Shared Objects, के अलावा जो कम से कम आप जो करना चाहते हैं उसका एक हिस्सा है (एसवीएसवी-आईपीसी में पाइथन ऑब्जेक्ट्स को साझा करें और उन्हें कई प्रक्रियाओं से संशोधित करें) और फिट करने के लिए अपने स्वयं के एक्सटेंशन मॉड्यूल को विकसित करने के शुरुआती बिंदु के रूप में कार्य कर सकते हैं जरूरत आप WSGI-पैदा सर्वर प्रक्रियाओं के साथ है, तो अजगर दुनिया में सब बहुत (है कि मैं ... के बारे में पता) कि जब उन्हें प्रक्रियाओं के बीच साझा करने अचार/unpickling वस्तुओं पर निर्भर नहीं करता नहीं है।

एक अन्य चीज जो दिमाग में आती है Pyro है, जो प्रक्रियाओं के बीच एक मनमानी नेटवर्क कनेक्शन पर साझा करता है (इसलिए, यूनिक्स-डोमेन सॉकेट के माध्यम से भी साझा कर सकता है), और मेरे अपने अनुभव में बिल्टिन की तुलना में अधिक लचीला है multiprocessing (प्रॉक्सी) ऑब्जेक्ट प्रबंधन के लिए ऑफ़र कर सकता है।

क्या आप भी एक नज़र में है आप वेब सर्वर है कि नहीं कांटा प्रक्रियाओं के लिए अपने WSGI आवेदन गाड़ी चला रहा है प्राप्त कर सकते हैं कि क्या है, बल्कि सूत्रण उपयोग करने के लिए हो सकता है; इस तरह से, आप बस जो आप तो सब पैदा की WSGI हैंडलर धागे से उपयोग कर सकते हैं साझा वस्तु कैश के लिए मानक अजगर वैश्विक डेटा का उपयोग करने की आवश्यकता होगी। एक थ्रेडेड डब्लूएसजीआई-सर्वर उदाहरण के लिए चेरीपी-बिल्टिन wsgiserver है, जिसे मैं एक ऐसे प्रोजेक्ट के लिए उपयोग कर रहा हूं जिसमें आपकी मांग है। mod_wsgi भी इस मामले में अपने संदर्भ के लिए काम करता है आप कार्यकर्ता एम पी एम के साथ अपाचे कॉन्फ़िगर (ताकि अपाचे सूत्र, और नई प्रक्रियाओं कांटा नहीं है)।

यदि वे सभी एक विकल्प नहीं हैं, तो आप बाहरी प्रक्रिया को वेबसाइवर में कर रहे वास्तविक प्रसंस्करण को निकालने के बारे में कैसे हैं, जो वेबपृष्ठों को आरपीसी तंत्र के कुछ रूपों के माध्यम से संवाद अनुरोधों को खींचने और खींचने के लिए संवाद करता है डेटा? "बैकएंड" प्रोसेसिंग सर्वर तब एक साधारण मल्टीथ्रेडेड पायथन प्रक्रिया हो सकता है, जो मानक लाइब्रेरी SimpleXMLRPCServer या कुछ चीज के माध्यम से एक एक्सएमएल-आरपीसी इंटरफ़ेस प्रदान करता है।

+0

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

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