python-3.x - 在多处理的情况下如何写入文件?
问题描述
我正在尝试以附加模式写入文本文件。正在通过多处理运行的函数中调用 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 multiprocessing safe writing to a file
这样,您将拥有一个写入文件的处理程序/管理器,并且所有这些进程都将信息提供给处理程序。处理程序管理所有文件 I/O。
推荐阅读
- mysql - 直接比较 TIMESTAMP 与使用月和日函数
- security - 使用创建表的潜在安全漏洞
- sql-server - 如何解决 SQL 异常“由于此查询中定义的提示,查询处理器无法生成查询计划。” 由 HangFire 引起
- reactjs - 无法让 Sentry 在本地记录 React 问题
- github - GitHub 不显示来自 Jupyter Notebook 的正确输出
- vue.js - vue create 和 npm run serve 有不同的错误
- formatting - 将 .fmt 行为与嵌套列表混淆
- firebase - 颤振“[cloud_firestore/invalid-argument] 客户端指定了一个无效参数。”
- julia - 在 Julia 中“运行”字符串的方法?
- excel - Excel VBA中的规则词部分