2011-07-12 15 views
7

मैं अजगर प्रोग्राम लिख रहा हूं जिसके लिए बहुत सारे छोटे लेकिन जटिल प्रोटोबफ-एन्कोड किए गए संदेशों को संसाधित करने की आवश्यकता है। मैंने प्रोटोकॉल बफर के पायथन कार्यान्वयन का उपयोग करने की कोशिश की, जो शुद्ध पायथन में लिखा गया है, लेकिन इसका प्रदर्शन वास्तव में भयानक है।Google प्रोटोकॉल बफर को बांधने के लिए स्विग का उपयोग

तो मैं एक समाधान में देख रहा हूं जो स्पष्ट रूप से some folks got to work - सी ++ फ़ाइलों को उत्पन्न करने के लिए प्रोटोक का उपयोग करें, फिर उन्हें पायथन के साथ लपेटने के लिए स्विग का उपयोग करें। समस्या यह है कि मैं एक काम कर रहे पायथन मॉड्यूल पर नहीं जा सकता।

  • -includeall के साथ चल रहे जब बड़ा घूँट, लिए सुनिश्चित करें कि सभी गूगल आधार/उपयोगिता उत्पन्न संदेश वर्गों द्वारा इस्तेमाल किया कक्षाएं भी लपेटा हो - बड़ा घूँट विफल रहता है, प्रणाली लापता के बारे में शिकायत फ़ाइलों में शामिल हैं (उदाहरण के लिए "स्ट्रिंग") । मैं इसके साथ काम नहीं कर सका- मैं झंडे या पूरी तरह से निर्देशिकाओं की प्रतिलिपि बना रहा हूँ। पर्यावरण उबंटू 10.04 है, प्रोटोबफ 2.2.0, स्विग 1.3.40, जीसीसी 4.4.3।

  • इस फ़्लैग के बिना, मैं अपने संदेश वर्गों के लिए एक अजगर मॉड्यूल उत्पन्न करने में सक्षम हूँ, लेकिन इस मॉड्यूल बेकार है: उत्पन्न अजगर संदेश कक्षाएं संदेश आधार वर्ग द्वारा प्रदान की सभी कार्यों याद कर रहे हैं - में विशेष रूप से सभी डी-क्रमबद्ध तरीकों में से एक। एक विधि (MergePartialFromCodedStream) नहीं चली जाएगी, क्योंकि इसे इनपुट कोड कोडेडइनपुटस्ट्रीम (जो प्रोटोबफ इंफ्रास्ट्रक्चर का हिस्सा है) की आवश्यकता है और इसलिए को स्विग के साथ लपेटा नहीं गया था)।

मैं सोच रहा था कि किसी के पास प्रोटोबफ-सी ++ के शीर्ष पर काम करने के लिए तैरने का एक उदाहरण है?

वैकल्पिक रूप से - क्या किसी अन्य पृष्ठ का उल्लेख किया गया है, जैसे कि उसी पृष्ठ में वर्णित पायथन एक्सटेंशन? हालांकि यह मेरे गतिशील स्कीमा के लिए एक उच्च रखरखाव समाधान की तरह लगता है ...

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

मुचस Gracias!

उत्तर

0

अपनी एसडब्ल्यूआईजी फ़ाइल में अपने जेनरेट किए गए हेडर को शामिल करने का प्रयास करें और आधार वर्ग फ़ाइलों को स्पष्ट रूप से शामिल करें (शामिल करने के बजाए)। आपको इतना स्पष्ट होना चाहिए कि एसडब्ल्यूआईजी समझता है कि आप बेस क्लास और व्युत्पन्न लोगों को बांधना चाहते हैं।

+0

धन्यवाद जॉन ... अंततः मुझे Greplin टूल (https://github.com/Greplin) का उपयोग करके हल किया गया - अत्यधिक अनुशंसित! –

1

यहां Greplin fast-python-pb समाधान का सही लिंक है जिसका उपयोग मैंने समाप्त कर दिया। उपयोग करना बहुत आसान है (कम से कम लिनक्स में), और प्रदर्शन x100 बार ऊपर है।

यह सॉफ्टवेयर अभी भी युवा है और Google कार्यान्वयन के साथ 100% अनुकूल नहीं है, कम से कम वैकल्पिक क्षेत्रों में खाली मूल्यों के संबंध में - लेकिन मतभेद बहुत मामूली हैं।

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