Проблема в том, что у меня есть 4 файла, которые мне нужно просмотреть, чтобы найти совпадения в списке из 400 000 строк. Каждый файл содержит около 1 миллиона + строк.
Без использования multiprocess.Pool для завершения потребовалось 14 дней, для этого потребуется 7.
Сначала я сравниваю список с файлами напрямую, но с Пулом. map () не работал с файлом, и я подумал, чтобы сохранить в список и попробовать сравнение списка со списком. Это было принято, но я чувствую, что можно сделать еще больше улучшений ...
Теперь я не знаю, правильно ли я его настроил или как, потому что я на граду с минимальным опытом.
Заранее спасибо!
def writeToList(listOfNumbers):
global ebcfilename
ebcpath = os.path.expanduser(dirpath + "/all_ebc")
ebcfiles = os.listdir(ebcpath)
listOfLines = []
p = Pool()
for f in ebcfiles:
ebcfile = open(os.path.join(ebcpath, f), 'r')
ebcfilename = os.path.basename(ebcfile.name)
for line in ebcfile:
line = line.rstrip('\n')
listOfLines.append([line])
ebcfile.close()
print(ebcfilename + ' sent!')
masterList = [listOfLines, listOfNumbers]
p.apply(searchCSV(masterList))
p.close()
p.join()
def searchCSV(masterList):
results = []
for elements in masterList[1]:
elementstring1 = ''.join(elements)
elementstring = ''.join(elementstring1.split())
for lines in masterList[0]:
linestring = ''.join(lines)
if linestring.startswith('ALL'):
continue
print(linestring)
for x in range(len(elementstring) - 1):
print(',' + elementstring[:(len(elementstring)-x)] + ',')
if (',' + elementstring[:(len(elementstring)-x)] + ',') in linestring:
results.append([elementstring[:(len(elementstring)-x)], linestring])
print(elementstring[:(len(elementstring)-x)], linestring)
break
print(results)
# writeToFile(results)
Результаты, например: (элемент поиска) (соответствует из файла) '1189011' 'IP49,1189011,546'
поэтому он соответствует среднему биту.