我一直在乱搞Multiprocessing几个月来试图找出一个优雅的可重复解决方案来解决我想要多个进程写入同一个文件而不会互相搞乱的问题。
我曾使用多处理生产者/消费者关系来克服这些障碍。我发现的好文章和帖子包括:
我尝试过实现类似于此处描述的共享计数器的函数:
我已成为concurrent.Futures ProcessPoolExecutor的简单性的忠实粉丝,并在每个执行器上使用map,如下所述:
今晚,我以为找到了一个名为紧固件的模块用于读写锁,我找到了我的搜索答案,但显然这种方法只适用于线程。
问题: 是否有优雅,简单的共享锁定解决方案,以便ProcessPoolExecutor中的所有进程在写入文件时不会互相覆盖?
注意:我正在使用csv.DictWriter向一个文件写入约800M行~200个字段。欢迎提出其他建议。
答案 0 :(得分:0)
您正在从错误的角度看解决方案。不是共享锁来保护对文件的访问,而是为单个进程提供文件访问权限。其他流程只会告诉它要写什么。
从这个角度来看,有很多类似于你的stackoverflow的问题。
Python multiprocessing safely writing to a file