Одна очевидная проблема заключается в том, что вы всегда запускаете pool.map
не только в основном процессе, но и тогда, когда интерпретаторы, используемые в параллельных подпроцессах, импортируют сценарий. Вместо этого вы должны сделать что-то вроде этого:
def run_all():
with Pool(processes=len(my_queries)) as pool:
pool.map(partial(execute_query,rs_conn_string), my_queries)
if __name__ == '__main__':
run_all()
Что касается вашего второго вопроса, это невозможно, поскольку транзакция выполняется для каждого соединения, которые находятся в отдельных процессах, если вы делаете это так.
Возможно, вам нужна асинхронная обработка команд, но еще не поддерживается PyGre SQL. Psygopg + aiopg , вероятно, лучше подходит для подобных вещей.