2012-10-24 28 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