首页 > 解决方案 > 在多处理的情况下如何写入文件?

问题描述

我正在尝试以附加模式写入文本文件。正在通过多处理运行的函数中调用 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()

我希望在文件关闭之前将所有对写入文件。谢谢!

标签: python-3.xpython-multiprocessing

解决方案


这个问题的答案可能会为您的问题提供解决方案: Python multiprocessing safe writing to a file

这样,您将拥有一个写入文件的处理程序/管理器,并且所有这些进程都将信息提供给处理程序。处理程序管理所有文件 I/O。


推荐阅读