2015-04-30 8 views
6

अजगर 2.7,मैं serializer कैसे बदल सकता हूं कि मेरे multiprocessing.mangers.BaseManager subclass cPickle को उपयोग करता है?

का उपयोग करते हुए मैं एक प्रबंधक multiprocessing.managers से प्राप्त का उपयोग कर प्रक्रियाओं भर में कई बड़ी वस्तुओं गुजर रहा हूँ। BaseManager और मैं समय बचाने के लिए serializer के रूप में cPickle का उपयोग करना चाहता हूं; यह कैसे किया जा सकता है? मैं देखता हूं कि बेसमैनेजर प्रारंभकर्ता serializer तर्क लेता है, लेकिन केवल विकल्प pickle और xmlrpclib दिखाई देते हैं।

उत्तर

2

ऐसा लगता है कि आप जो भी पूछ रहे हैं वह सख्ती से नहीं कर सकते हैं।

वास्तव में, मल्टीप्रोसेसिंग का एक कांटा है, pathos, अचार के विकल्प के निर्माता, dill - सीरिएलाइज़र को नियंत्रित करने की सीमित क्षमता के कारण भी।

मैं व्यक्तिगत रूप से सुझाव देता हूं कि आप ipython.parallel का उपयोग करें, क्योंकि यह अधिक सक्रिय रूप से बनाए रखा लगता है।

इस मामले में Parallelism and Serialization इस मामले में अधिक जानकारी देखें।

1

मैं डिल और पथ के लेखक हूं। मल्टीप्रोसेसिंग को डिफ़ॉल्ट रूप से सीपीकल का उपयोग करना चाहिए, इसलिए आपको कुछ भी नहीं करना चाहिए।

यदि आपका ऑब्जेक्ट खोज नहीं करता है, तो आपके पास दो विकल्प हैं: मल्टीप्रोसेसिंग या कुछ अन्य समांतर बैकएंड के कांटा पर जाएं, या अपनी कक्षा में तरीकों को जोड़ें (यानी विधियों को कम करें) जो ऑब्जेक्ट को क्रमबद्ध करने के लिए पंजीकरण करते हैं।

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