読み込む必要のあるデータ ファイルが大きすぎて、リストへの読み込みに時間がかかりすぎます。これにマルチプロセスを使用するにはどうすればよいですか? つまり、プロセスファイルの読み取りとリストへのロードを並列化したいのです。助けてください。
基本的に、以下のようなリストにロードする必要があるデータテーブルがあります。ファイルの読み込みには時間がかかりませんが、リスト (myList) への読み込みには約 1 分かかります。それで、これを並列化することは可能ですか:
def load_file(self, fileName):
time_start = time.time()
myList = []
# mySet = set()
lines = self.read_file(fileName)
# time_end = time.time()
# print fileName, ": loaded ", round(time_end-time_start, 4)," seconds"
for line in lines:
content = line.split()
myList.append(content)
time_end = time.time()
print fileName, ": ", len(myList), " rows loaded in", round(time_end-time_start, 4)," seconds"
return myList
def read_file(self, fileName):
filePath = self.data_directory + '\\' + fileName
try:
with open(filePath, 'r') as f:
lines = f.readlines()
f.close()
return lines
except ValueError:
print filePath + ' does not exist'
その場しのぎの方法として、(ファイルに 2M 行あると仮定すると、len(lines) = 2M)、最初の 1M を myList1 にロードし、2 番目の 1M を myList2 に並行してロードしてから、それらをマージします (myList = myList1+myList2)。しかし、これはベスト プラクティスとは思えません。