熊猫矢量化

杰克

在我的python脚本中,我需要对同一数据库中相似(但不相关)的表执行一系列sql查询。每个选择的输出列始终相同。有没有一种方法可以执行此异步操作以减少处理时间?

tables =  pd.DataFrame(['Table1, Table2, Table3'], columns=['Table Name'])
sqlQuery1 = '''select a, b, c from TABLENAME'''

sqlDataLst = []
for i, row in tables.iterrows():
    
    sqlQuery1_exe= sqlQuery1.replace("TABLENAME",row['Table Name'])
    sqlData = pd.read_sql_query(sqlQuery1_exe,getConn())
    sqlDataLst.append(sqlData)
        
sqlDataAll = pd.concat(sqlDataLst)
阿敏·盖比(Amin Gheibi)

您可以使用多线程。定义一个新函数(让我们调用它new_function),该函数将表名作为参数,然后运行read_sql_query

from concurrent.futures import ThreadPoolExecutor

with ThreadPoolExecutor(max_workers=10) as executor:
   for i, row in tables.iterrows():
      future = executor.submit(new_function, row['Table Name'])

注意:在python中使用多线程时,您应该注意GIL(Pandas的开发人员对此非常谨慎)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章