मैं उपयोग करने के लिए कोशिश कर रहा हूँ multiprocessing
के Pool.map()
बाहर काम एक साथ विभाजित करने के लिए कार्य करते हैं। जब मैं निम्नलिखित कोड का उपयोग करता हूं, तो यह ठीक काम करता है:
import multiprocessing
def f(x):
return x*x
def go():
pool = multiprocessing.Pool(processes=4)
print pool.map(f, range(10))
if __name__== '__main__' :
go()
हालाँकि, जब मैं इसे अधिक ऑब्जेक्ट-ओरिएंटेड दृष्टिकोण में उपयोग करता हूं, तो यह काम नहीं करता है। त्रुटि संदेश यह देता है:
PicklingError: Can't pickle <type 'instancemethod'>: attribute lookup
__builtin__.instancemethod failed
यह तब होता है जब निम्नलिखित मेरा मुख्य कार्यक्रम है:
import someClass
if __name__== '__main__' :
sc = someClass.someClass()
sc.go()
और निम्नलिखित मेरी someClass
कक्षा है:
import multiprocessing
class someClass(object):
def __init__(self):
pass
def f(self, x):
return x*x
def go(self):
pool = multiprocessing.Pool(processes=4)
print pool.map(self.f, range(10))
किसी को भी पता है कि समस्या क्या हो सकती है, या इसके आसपास एक आसान तरीका हो सकता है?
PicklingError: Can't pickle <class 'function'>: attribute lookup builtins.function failed