对于I/O函数使用ProccessPoolExecutor



最近我一直在使用ProcessPoolExecutor来加速我编写的一些函数的处理。

我有一个关于我想加速的函数的问题。

这个函数

def thefunction(input_file, output_file, somepar)

包括打开和读取输入文件,处理它并将结果写入输出文件。

现在我正在做

lista=glob.glob(os.path.join(args.thefolders,'path/this.json'))
for filen in lista:
print("Processing ",filen)
thefunction(filen,None,args.somepar)

我想做一些多进程映射,如

with ProcessPoolExecutor() as process_pool:
work_done=list(process_pool.map(partial(thefunction,somepar=args.somepar),lista))

但是我有点担心,因为这个函数涉及到I/O

如果访问的文件对于列表的每个成员都是不同的,那么执行上述使用是否安全?

如果文件不同,那么同时从不同进程进行IO操作是完全合理的。

如果文件是相同的,这样的操作是不安全的,并且需要使用同步原语,如锁,这将使多处理效率低下。

相关内容

  • 没有找到相关文章

最新更新