如何快速合并1000个txt文件,每个文件2G大小?

1.有没有快速分组,合并的算法?
2.单线程合并太慢了,并行合并会不会大幅度提高合并效率?
3.欢迎提出任何意见或者建议。

阅读 3.1k
2 个回答

你没有说明合并文件时有没有什么要求,所以先假设只是将两个文件简单地拼接在一起,没有什么额外的操作。那么,整个过程的最大瓶颈其实应该是文件读写操作,所以我觉得开多线程来操作对性能应该没什么提升,老老实实地逐个读取文件,在尾部追加可能反而是最快的。

我觉得可以使用分治法,开多个线程,并将任务分解,类似Java的Fork-join框架,大概是这么个流程

def combine(L, R):
    if R - L < 10:
        return combine10files_in_thread(L, R)
    else:
        mid = (R - L) // 2
        a = combine(L, mid)
        b = combine(mid + 1, R)
        combine2file(a, b)
def combine10files_in_thread(L, R):
    #在新线程合并10个文件
    pass
def combine2file(a,b):
    #合并稍微大一些的文件并删除中间文件
    pass
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题