我有一个查询,我想使用multiprocessing.Pool模块并行提交。
我的问题是我如何提交查询以及corr。将变量绑定到pool.map
?
因此,如果查询类似于:
SELECT a.col1, a.col2, t.col1 FROM table a,
(VALUES(:x1,:x2),(:y1,:y2),(:z1,:z2))
AS t(col1,col2) WHERE a.col2=col2 AND a.col1 % t.col1
我用每个查询来判断绑定变量:
{x1 : 'AA', x2:'XX',y1:'BB', y2:'YY',z1:'CC',z2:'ZZ'}
如何在此调用pool.map(..)
?
我问这个是因为pool.map()
只支持单参数工作函数
现在,如果我不使用绑定变量,我会像这样调用它:
def execSQL():
#init db_user, db_host, sql_qry here
...
conn = psycopg2.connect("dbname=%s host=%s user=%s password=%s" % (db_name, db_host, db_user, db_pwd))
curs = conn.cursor()
curs.execute(sql_qry)
records = curs.fetchall()
return records
def run():
sql_queries = [...] # some list of queries to be run in parallel
pool = Pool(processes=4)
results=pool.map(execSQL, sql_queries)