2012-10-24 40 views
0

我使用multiporcessing.Pool類將任務提交給工作人員,我希望每個工人在啓動時(或者由maxtasksperchild參數替換)來打開自己的數據庫連接。如何爲多處理池的ewery成員初始化數據庫連接?

現在代碼類似於此:

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關鍵字看起來非常難看,能不能更溫柔呢?

回答

0

經過一段時間這個問題...簡單的答案是,你不能做這種事情與目前的執行Pool