Я пытаюсь использовать многопроцессный объект Pool. d нравится, чтобы каждый процесс открывал соединение с базой данных при запуске, а затем использовал это соединение для обработки передаваемых данных. (Вместо того, чтобы открывать и закрывать соединение для каждого бита данных.) Это похоже на то, для чего инициализатор, но я не могу понять, как взаимодействуют обработчик и инициализатор, поэтому у меня есть что-то вроде этого:
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())
как мне (или мне) вернуть курсор из get_cursor() в process_data()?