簡體   English   中英

如何在Python / psycopg2中同時執行多個獨立的語句?

[英]How to execute multiple independent statements at the same time in Python/psycopg2?

我在PostgreSQL中有三個實例化視圖,它們需要很長時間來刷新(每個視圖都需要幾個小時以上),而且我每天都需要刷新它們。

我目前正在使用Python腳本來執行此操作,該腳本一個接一個地刷新視圖,但是與在pgAdmin中手動刷新視圖相比,它花費的時間是三次(在那里我可以在不同的選項卡中同時運行所有三個刷新)。

這是我的代碼現在的樣子:

import psycopg2
config = {'connection details'}
conn = psycopg2.connect(**config)
cur = conn.cursor()

# This is the part that I want to run simultaneously
cur.execute('REFRESH MATERIALIZED VIEW gsam.mv_hist_wip_data')
cur.execute('REFRESH MATERIALIZED VIEW gsam.mv_hist_ver_data')
cur.execute('REFRESH MATERIALIZED VIEW gsam.mv_hist_verda_data')

conn.close()

如何使用Python和psycopg2同時執行三個REFRESH MATERIALIZED VIEW語句?

您可以使用多處理池,請在此處檢查文檔。 並檢查以下示例

import psycopg2
from multiprocessing import Pool

def main():
    p = Pool(processes=3)
    view_names = ['mv_hist_wip_data','mv_hist_ver_data', 'mv_hist_verda_data']
    result = p.map(refresh_view, view_names)

def  refresh_view(view_name):

    config = {'connection details'}
    conn = psycopg2.connect(**config)
    cur = conn.cursor()
    # This is the part that I want to run simultaneously
    cur.execute('REFRESH MATERIALIZED VIEW gsam.%s', (view_name,))
    conn.close()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM