我正在处理数千个XML文件,并希望使用ProcessPoolExecutor
中的concurrent.futures
来完成。
唯一的documentation example假设您在继续之前等待所有结果(就像我发现的所有concurrent.futures教程一样),但在这种情况下这是不可行的,因为我将耗尽RAM长时间在处理完成之前。
一种选择是使用类似这样的东西批量处理 - http://grokbase.com/t/python/python-list/1458ss5etz/real-world-use-of-concurrent-futures#20140508uqijcqm5ddbvxhq4xpkqaw3ebi,并且我在之前的项目中使用了该方法。
但我认为更好的选择是将流程结果(各种数据的dict
)发送到单独的(单个)后处理流程。在这种情况下,后处理需要将结果写入SQLite数据库文件,但如果它可以是单独的单个专用进程,则它将对文件进行独占控制,从而消除死锁,文件损坏等风险。 / p>
我知道这可以通过使用队列进行多处理来实现这个优秀的答案 - Python multiprocessing safely writing to a file - 这可以通过concurrent.futures完成,如果是这样,怎么做?
(我正在使用Python 3.6)