0

我在 Django 中有一些相当庞大的代码,并且正在使用 pool.map() 来并行化它。

它的一个超级微不足道的分解将是这样的:

def addNumbers(server):
    conn = Connection(server)
    return conn.something.something

def home(request):
    c = {}
    pool = Pool(processes=4)
    c['myResult'] = pool.map(addNumbers, servers)
    pool.close()
    return render_to_response('homepage.html', c, context_instance=RequestContext(request))

主页视图调用 addNumbers 并将一些数据发送回页面。

然而,当一个像这样的函数addNumbers变得巨大时,我不可避免地会写一个错误,你会收到以下错误消息:

/usr/lib/python2.6/site-packages/Django-1.4.3-py2.6.egg/django/core/handlers/base.py

在 get_response response = callback(request, *callback_args, **callback_kwargs) ...

▶ Local vars
/path-to-my-views/views.py in home
    c['myResult'] = pool.map(addNumbers, servers) ...

▶ Local vars
/usr/lib64/python2.6/multiprocessing/pool.py in map
        return self.map_async(func, iterable, chunksize).get() ...

▶ Local vars
/usr/lib64/python2.6/multiprocessing/pool.py in get
            raise self._value ...

▶ Local vars

这只是告诉我在被并行化的函数中某处存在错误,但实际上并没有告诉我可以在哪一行找到错误,就像正常的错误消息一样。

超级令人沮丧,任何人都有任何想法(除了“编写更好的代码”:P)

4

0 回答 0