Python отправляет несколько запросов к postgresql db одновременно - PullRequest
0 голосов
/ 10 января 2019

У меня есть 3 таблицы, и я хочу отправить 3 запроса одновременно. Как мне это сделать? В настоящее время я делаю это с Pool().imap(), но думаю, что вместо этого я буду использовать многопоточность. Я прав?

Вот мой код:

from sqlalchemy import create_engine

def pull_data(timeframe, sql_to_format):
    return pd.read_sql(
        sql_to_format.format(tf=timeframe),
        create_engine("postgresql+psycopg2://...")
    )


if __name__ == '__main__':
    pool = Pool(processes=3)
    raw = pool.imap(partial(
        pull_data,
        sql_to_format="SELECT * FROM xyz.abc_{tf}"),
        ['1991', '1992', '1993'])
    pool.close()

EDIT

хорошо, вот как я это решил:

class myThread (threading.Thread):
    def __init__(self, tf):
        threading.Thread.__init__(self)
        self.tf = tf

    def run(self):
        sql_to_format = f'SELECT * FROM xyz.abc_{tf}'
        print(func_to_execute_query(sql_to_format).shape)


if __name__ == '__main__':
    threads = [myThread(x) for x in [f'199{i}' for i in range(1,4)]]

    for th in threads:
        th.start()

    for th in threads:
        th.join()

есть ли лучший способ быстрее?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...