gpt4 book ai didi

python - 在 Python 3 中使用 'multiprocessing' 库进行 PostgreSQL 查询

转载 作者:行者123 更新时间:2023-11-29 13:44:23 25 4
gpt4 key购买 nike

我正在尝试编写一个 Python 脚本,以将查询数据从我的数据库读取到 pandas 数据框中。

我已显着简化代码以测试使用多处理库的有效性,以便并行运行查询,因为运行包含我想要收集的所有信息的查询需要几分钟时间。

但是,从多处理中使用 Pool 并不是最有效的。 (实际上,运行脚本时性能没有任何差异)。是否有更有效的方法在 PostgreSQL 中并发运行查询?

任何建议都会很棒!

import psycopg2
import pandas as pd
import sqlalchemy as sa
from multiprocessing import Pool

engine = sa.create_engine("<database info>")

def run_query(query):
print(query)
data_frame = pd.read_sql_query(query, engine)

if __name__ == '__main__':
pool = Pool(processes=len(queries))
pool.map(run_query, queries)

最佳答案

我不知道它是否有效,但你可以使用 worker 和 producers 方案。基本上,您定义了一个多处理 Q,生产者进程向 Q 中添加了一些内容。Worker 监听 Q 并在将一些信息放入 Q 后立即开始工作。

这是一个很好的例子。

http://danielhnyk.cz/python-producers-queue-consumed-by-workers/

Multiprocessing 的问题是您必须注意共享数据,并且还必须考虑安排进程的时间,这使得 Python 中的 Multiprocessing 对于小任务不是很有用。但是,如果您经常执行该任务,或者创建一次流程并在有任务时运行这些任务,那么您会受益。

关于python - 在 Python 3 中使用 'multiprocessing' 库进行 PostgreSQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50820366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com