У меня есть файл json, из которого я хочу удалить дублирующиеся строки, но он слишком велик, чтобы поместиться в память.Я нашел способ сделать это, но думаю, что это не самый лучший способ.
Моя проблема в том, что он работает за 8 минут для набора данных 12 ГБ.Но требование состоит в том, чтобы масштабировать код так, чтобы он мог работать на наборе данных объемом 100 ГБ.Любые указатели о том, как это сделать?Должен ли я использовать многопоточность или многопроцессорность в Python для достижения этой цели?Или любой другой метод?
Это код:
import json import time
"" "Этот запрос содержит бизнес-логику для определения дубликатов и создания выходного файла.для дальнейшей обработки "" "
класс BusinessService:
""" The method identiifes the duplicate """
def service(ipPath,opPath):
start_time = time.time() #We start the timer to see how much time the method takes to work #
uniqueHandleSet = set(); #Creating a set to store unique values #
try:
duplicateHandles = open(opPath,'w+',encoding='utf-8') #Opening and creating an output file to catch the duplicate hanndles #
with open(ipPath,buffering = 200000000,encoding = 'utf-8') as infile: #Reading the JSON File by buffering and using 20mb as it is too big to read at once #
for line in infile:
tweetJsonObject = json.loads(line);
if tweetJsonObject["name"] not in uniqueHandleSet:
uniqueHandleSet.add(tweetJsonObject["name"]);
else:
duplicateHandles.write(line);
print("--- %s seconds --- memory 200mb while buffering" % (time.time() - start_time)); #Printing the total time required to execute
except:
print("Error")
finally:
duplicateHandles.close();