Как записать в файл в случае многопроцессорности? - PullRequest
0 голосов
/ 28 сентября 2019

Я пытаюсь записать текстовый файл в режиме добавления.Метод write () вызывается в функции, которая выполняется посредством многопроцессорной обработки.Я закрываю файл в самом конце кода, думая, что все будет написано до его закрытия.Но то, что происходит, совершенно противоположно.Файл закрывается в каждом процессе.Я хочу закрыть его после завершения всех процессов.

Вот как я это делаю.

import concurrent.futures

f = open('input.txt', 'a')
pairs = ['pair1', 'pair2', 'pair3', 'pair4', 'pair5']

def validity_check(pair):
        f.write(f'{pair}\n')

if __name__ == '__main__':
    with concurrent.futures.ProcessPoolExecutor() as executor:
        idx = 0
        while True:
            executor.map(validity_check, pairs[idx:idx + 5])
            idx = idx + 5
            if idx >= len(pairs):
                break

f.close()

Я хочу, чтобы все пары были записаны в файл до его закрытия.Спасибо!

1 Ответ

0 голосов
/ 28 сентября 2019

Ответ на этот вопрос может дать решение вашей проблемы: Многопроцессорная обработка Python для безопасной записи в файл

Таким образом, у вас будет обработчик / менеджер, который записывает в файл ивсе эти процессы передают информацию обработчику.Обработчик управляет всеми файлами ввода-вывода.

...