2010-02-11 14 views
6

मैं अजगर करने के लिए नया हूँ और फ़ाइलों को प्रोसेस करने के लिए एक multiprocessing.pool कार्यक्रम की कोशिश कर रहा है, यह ठीक है जब तक वहाँ कोई अपवाद नहीं हैं काम करता है में से किसी में एक अपवाद नहीं है। धागा/प्रक्रिया के किसी भी एक अपवाद हो जाता है पूरे कार्यक्रम थ्रेड के लिए इंतजार कर रहा है कोड कीबहु पूल लटका हुआ है जब वहाँ धागा

टुकड़ा:

cp = ConfigParser.ConfigParser() 
cp.read(gdbini) 
for table in cp.sections(): 
    jobs.append(table) 
#print jobs 
poolreturn = pool.map(worker, jobs) 
pool.close() 
pool.join() 

विफलता संदेश:


Traceback (most recent call last): 
    File "/opt/cnet-python/default-2.6/lib/python2.6/threading.py", line 525, in __bootstrap_inner 
    self.run() 
    File "/opt/cnet-python/default-2.6/lib/python2.6/threading.py", line 477, in run 
    self.__target(*self.__args, **self.__kwargs) 
    File "/opt/cnet-python/default-2.6/lib/python2.6/multiprocessing/pool.py", line 259, in _handle_results 
    task = get() 
TypeError: ('__init__() takes exactly 3 arguments (2 given)', <class 'ConfigParser.NoOptionError'>, ("No option 'inputfilename' in section: 'section-1'",)) 

मैं आगे प्रक्रिया समाप्त करने के लिए एक अपवाद संचालक जोड़ा गया

try: 
    ifile=cp.get(table,'inputfilename') 
except ConfigParser.NoSectionError,ConfigParser.NoOptionError: 
    usage("One of Parameter not found for"+ table) 
    terminate() 

लेकिन फिर भी यह इंतजार कर रहा है, यकीन है कि लापता क्या नहीं।

+0

लगता ConfigParser की तरह एक ही समस्या SQLAlchemy (अपवाद pickleable नहीं) के रूप में, ([पायथॉन लिपि में हैंग SQLAlchemy और बहु ​​का उपयोग कर] को देखने के http://stackoverflow.com/questions/8785899/hang-in-python-script है उपयोग करना-SQLAlchemy और बहु)। मैंने इस मुद्दे की रिपोर्ट की है [ConfigParser अपवाद नहीं चुनने योग्य हैं] (http://bugs.python.org/issue13760)। –

उत्तर

0

मैं एक ही मुद्दा था। यह तब होता है जब एक कार्यकर्ता प्रक्रिया एक उपयोगकर्ता अपवाद जो एक कस्टम निर्माता है उठाती है।

class NoOptionError(ValueError): 

    def __init__(self, message, *args): 
     super(NoOptionError, self).__init__(message, args) 
+1

यह अपवाद एक पायथन मॉड्यूल (ConfigParser) से है और इसे ठीक करने की आवश्यकता है। –

2

अजगर में 3.2+ इस काम करता है के रूप में उम्मीद: सुनिश्चित करें कि आपके अपवाद (उस मामले में ConfigParser.NoOptionError) के साथ आधार अपवाद initializes बिल्कुल दो तर्क बनाओ। पायथन 2 के लिए, यह बग r74545 में तय किया गया था और पायथन 2.7.3 में उपलब्ध होगा। इस बीच, आप configparser लाइब्रेरी का उपयोग कर सकते हैं जो 3.2+ से configparser का बैकपोर्ट है। Check it out.

+0

क्या यह configparser या multiprocess में बड़ा था? (मुझे multiprocess के साथ एक ही त्रुटि मिल रही है, configparser से असंबंधित) – user48956

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