Python Ошибка памяти - Оптимизируйте часть кода из скребка, чтобы уменьшить использование памяти - PullRequest
0 голосов
/ 02 марта 2020

Я использую следующий код для удаления указанных c данных с 2 сайтов.

firstclass = input("First class: ")
nestedclass = input("Nested class: ")
classend = input("Class close tag: ")
exportlist = []

def getNames(i):     #i is the html string.
    i=str(i)
    check = i.find(firstclass)
    while check != -1:
        logging("Making new loop...")  #function to show the message together with time in the console
        i = str(i)
        i = i.replace(firstclass, '\n', 1)
        logging("progress = 25%")
        i = i.split('\n')
        i = str(i[1])
        logging("progress = 50%")
        i = i.replace(nestedclass, '\n', 1) 
        i = i.split('\n')
        logging("progress = 75%")
        i = str(i[1])
        i = i.replace(classend, '\n', 1)
        logging("Loop done ! ")
        i = i.split('\n')
        exportlist.append(i[0])
        i = str(i[1])
        check = i.find(firstclass)


        if check < 500 and check!= -1:              #This part removes the next data piece,
            logging("In short Check")               #if it's very close to the previous one.
            i = str(i)                              #In case of double data in short distance
            i = i.replace(firstclass, '\n', 1) 
            i = i.split('\n')
            i = str(i[1])
            i = i.replace(nastedclass, '\n', 1) 
            i = i.split('\n')
            i = str(i)
            i = i.replace(classend, '\n', 1)
            i = i.split('\n')
            i = str(i)
            check = i.find(firstclass), '\n', 1) 

Это часть кода, с которой у меня больше всего проблем. Последние 2 недели все работало медленно, но нормально. Даже через 10-20 минут у меня были правильные результаты. Но, возможно, из-за постоянно увеличивающегося размера файла, теперь я получаю это при запуске:

Memmory error.

Я пытался удалить первый класс, но без него он не работает нормально, потому что вложенный существует и за пределами первого класса, и приносит неправильные результаты. Итак, какие-либо предложения, как написать этот код лучше?

Кроме того, я использую Python 64bit. Получил 64 ГБ ОЗУ, что, я думаю, достаточно в этом случае. Если есть способ увеличить объем памяти, который использует python, я готов это сделать.

...