【发布时间】:2016-02-25 07:21:47
【问题描述】:
几个月来我一直在搞乱多处理,现在试图找出一个优雅的可重复解决方案来解决我希望多个进程写入同一个文件而不会相互混淆的问题。
我过去曾使用多处理生产者/消费者关系来克服这些障碍。我发现的好文章和帖子包括:
我尝试实现类似于此处描述的共享计数器的功能:
我已经成为 concurrent.Futures ProcessPoolExecutor 的简单性以及在每个执行程序上使用 map 的忠实粉丝,如下所述:
今晚,我以为我通过发现一个名为用于读写锁的紧固件模块找到了搜索的答案,但显然这种方法只适用于线程。
问题: 是否有一种优雅、简单的共享锁解决方案,以便 ProcessPoolExecutor 中的所有进程在写入文件时不会相互覆盖?
注意:我正在使用 csv.DictWriter 将大约 800M 行约 200 个字段写入一个文件。欢迎其他建议。
【问题讨论】:
-
我只是尝试使用全局变量,如果未设置为全局变量则设置锁。仍然对更好的解决方案持开放态度。也许是工作库?
标签: python locking multiprocessing file-writing concurrent.futures