我有一个数据处理应用程序,可以将结果保存到数据库表(4列,目前300k行,可能增长到1000万行)。它以下列方式使用Python的多处理模块:
def worker(input_):
session = _open_scoped_session() # leaving details aside
# do some work, add some objects to session
session.commit()
session.close()
return
pool = multiprocessing.Pool(processes=n_proc)
pool.map(worker, inputs)
# ...
我怀疑每个工作进程中的打开和关闭会话,即几十万个打开/关闭调用,占用了大量的执行时间(是的,我知道我需要对其进行正确的分析)。有没有办法在这种工作流程中优化数据库访问?也许,使用连接池? 我在1Gbit / s网络上使用SQL Server 2012和Sqlalchemy以及pymssql。