我在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
这样的函数变得庞大时,我将不可避免地写入一个错误,并且您收到以下错误消息:
在get_response中/usr/lib/python2.6/site-packages/Django-1.4.3-py2.6.egg/django/core/handlers/base.py
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)