我使用multiporcessing.Pool
类向工作人员提交任务,我希望每个工作人员在启动(或由于maxtasksperchild
参数而被替换)时打开自己的数据库连接。
现在代码看起来类似于:
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
关键字看起来非常难看,可以更温和地完成吗?