使用Concurrent.Futures并安全地写入SQLite文件

时间:2017-10-12 20:42:53

标签: python python-3.x sqlite multiprocessing concurrent.futures

我正在处理数千个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)

0 个答案:

没有答案