小编mk.*_*mk.的帖子

多处理池在任何线程中存在异常时挂起

我是Python的新手,并尝试使用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()
Run Code Online (Sandbox Code Playgroud)

失败消息:


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'",))
Run Code Online (Sandbox Code Playgroud)

我继续添加了一个异常处理程序来终止进程

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

但它仍然等待,不知道什么是失踪.

python pool exception hang multiprocessing

7
推荐指数
1
解决办法
3134
查看次数

标签 统计

exception ×1

hang ×1

multiprocessing ×1

pool ×1

python ×1