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