タスクをワーカーに送信するためにクラスを使用multiporcessing.Pool
します。各ワーカーが起動したとき (またはパラメーターのおかげで置き換えられたときmaxtasksperchild
) に、独自の DB 接続を開きます。
コードは次のようになります。
conn = None
def init(dsn):
global conn
conn = connect(dsn)
def f(x):
global conn
<do the work with conn>
p = multiprocessing.Pool(initializer=init, initargs=('dsn',), maxtasksperchild=100)
p.map(f, ....)
これは機能しますが、そのglobal
キーワードは非常に見苦しく見えます。もっと穏やかに行うことはできますか?