2017-02-17 223 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