कब उठाया जा सकता है मैं मल्टीप्रोसेसिंग मॉड्यूल का उपयोग करके पाइथन में समांतर प्रसंस्करण की उचित मात्रा में कर रहा हूं। मुझे पता है कि कुछ वस्तुएं अचार हो सकती हैं (इस प्रकार बहु-पी में तर्क के रूप में पारित) और अन्य नहीं कर सकते हैं। जैसेपाइथन ऑब्जेक्ट को
class abc():
pass
a=abc()
pickle.dumps(a)
'ccopy_reg\n_reconstructor\np1\n(c__main__\nabc\np2\nc__builtin__\nobject\np3\nNtRp4\n.'
लेकिन मैं अपने कोड (एक दर्जन तरीकों, या तो) में कुछ बड़े वर्गों है, और ऐसा होता है:
a=myBigClass()
pickle.dumps(a)
Traceback (innermost last):
File "<stdin>", line 1, in <module>
File "/usr/apps/Python279/python-2.7.9-rhel5-x86_64/lib/python2.7/copy_reg.py", line 70, in _reduce_ex
raise TypeError, "can't pickle %s objects" % base.__name__
TypeError: can't pickle file objects
यह नहीं एक फ़ाइल वस्तु है, लेकिन अन्य समय में, मैं हूँ मूल रूप से कहने वाले अन्य संदेश प्राप्त करें: "मैं इसे नहीं चुन सकता"।
तो नियम क्या है? बाइट्स की संख्या? पदानुक्रम की गहराई? चंद्रमा का चरण?
क्या आपने डिल की कोशिश की है? https://pypi.python.org/pypi/dill यह 'अचार' संभावनाओं को बहुत बढ़ाता है। – geekazoid
मैंने वास्तव में अभी डिल की कोशिश की और यह काम करता है, लेकिन यह हमारे निर्माण का हिस्सा नहीं है, इसलिए मुझे सिस्टम प्रशासक से अनुरोध करना होगा। फिर भी आश्चर्य है कि 'नियम' क्या है। –
@PaulNelson यदि आप 'dill' का उपयोग करने जा रहे हैं, तो आप 'मल्टीप्रोसेसिंग' का उपयोग नहीं कर सकते हैं। 'डिल' लेखक के पास 'मल्टीप्रोसेसिंग' कांटा होता है जिसे 'पथ' कहा जाता है जिसे आप इसके बजाय उपयोग करना चाहते हैं। – dano