Я пытаюсь использовать объект многопроцессного пула. Я хотел бы, чтобы каждый процесс открыл соединение с базой данных при его запуске, а затем использовал это соединение для обработки передаваемых данных. (Вместо того, чтобы открывать и закрывать соединение для каждого бита данных.) Кажется, что инициализатор для, но я не могу оборачивать голову тем, как взаимодействует рабочий и инициализатор. Поэтому у меня есть что-то вроде этого:
def get_cursor():
return psycopg2.connect(...).cursor()
def process_data(data):
# here I'd like to have the cursor so that I can do things with the data
if __name__ == "__main__":
pool = Pool(initializer=get_cursor, initargs=())
pool.map(process_data, get_some_data_iterator())
как мне (или сделать I) вернуть курсор из get_cursor() в process_data()?