Соединения не могут быть разделены между процессами. Однако вы можете выполнять параллельные запросы в одном и том же процессе, используя код, подобный следующему:
pool = cx_Oracle.SessionPool(USER, PASSWORD, DSN, min=5, max=20, increment=5)
def do_query(part_num):
with pool.acquire() as conn:
cursor = conn.cursor()
cursor.execute("select some_stuff from some_table where part_num = :1",
[part_num])
print("Fetched part information for part", part_num)
threads = [threading.Thread(target=do_query, args=(p,)) for p in get_parts_list()]
for t in threads:
t.start()
for t in threads:
t.join()
После того, как вы получили данные из базы данных, если у вас есть значительная работа, вы можете передать извлеченные данные данные для подпроцессов через многопроцессорность, чтобы сделать эту работу. Вы просто не можете выполнять какую-либо работу с базой данных в подпроцессе - по крайней мере, без предварительного подключения к этому подпроцессу.