2017-02-17 139 views
-1

我会在当前需要大量时间的文本文件上做一些处理。我从活动监视器观察到,当前应用程序只使用1个线程,因此我决定将文件拆分为multiprocessing.cpu_count()相同的文件,并分别在它们中执行相同的过程。Python分割文本文件

我的代码如下:

with open(filename) as f: 
    "do the process" 

我想改变这个:

with open(filename) as f: 
    files = f.splitinto(cpu_count) 
    for file in files: 
     "start the threads to do the same process for each file" 
+2

你的问题到底是什么?你看起来好像你已经掌握了它。 –

+0

没有像f.splitinto将文件分割成多个文件的方法。这是我寻找的东西。 – Mehr

+0

啊。好的。将一个文件分割成多个文件意味着什么?分裂如何? –

回答

1

file.readlines()为您提供了文本文件列表的线条。这意味着如果你有一个100行的文本文件,readlines()会给你一个长度为100的list--其中每个项目是你文件中的一行。继此之后,您可以执行以下操作:

with open('test.txt', 'r') as myfile: 
    lines = myfile.readlines() 
    lines_list[0] = lines[0:len(lines)/cpu_count) 
    # ... and so on.. 

之后,您可以分行并处理它们,无论您希望如何。

+0

考虑一个5 GB的文件。这不会消耗太多内存吗? – Mehr

+0

它会的。然后你会写一个单独的函数来将原始文件分成几个文件,然后使用你已有的代码处理这些文件。 我的观点是,如果你有一个文本文件,最简单的方法是按行。 – Anomitra