我需要讀取的數據文件太大,並且將其加載到列表中需要很長時間。我怎樣才能使用multiproces呢?換句話說,我想將進程文件讀取並加載到列表中。能否請你幫忙。如何讀取文件並加載到多進程列表中
基本上,我有一個數據表,我需要加載到列表,如下所示。讀取文件不需要時間,但將其加載到列表(myList)大約需要1分鐘。這樣,是有可能parallelise此:
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(行)= 2M),加載第一1M至myList1,和第二1M到myList2並行,然後合併它們,myList = myList1 + myList2。但這聽起來不像最佳做法。
您確定您確實需要首先將其加載到列表中嗎?你想達到什麼目的? – bpgergo
你需要提供更多關於你想要完成的細節。通常,您無法通過在多個進程之間分割讀取來更快地從磁盤讀取文件。 –
你想完成什麼?你究竟試過了什麼?你遇到了什麼問題?如果你耗盡內存多進程不會有幫助。如果IO是瓶頸,多進程也無濟於事。事實上並行讀取文件很少是一個好主意。 – pentadecagon