У меня есть 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()
есть ли лучший способ быстрее?