Утечка памяти в python скрипте (с помощью pyahocorasick) - PullRequest
0 голосов
/ 25 февраля 2020

Я пишу сценарий для сопоставления списка 350K шаблонов с большими файлами (каждый 700+ МБ, содержащий 7M строк), используя pyahocorasick. Однако каждый раз, когда я добираюсь до третьего файла (около 3,3 млн строк), сценарий уничтожается.

Я подозреваю, что есть утечка памяти, потому что использование памяти продолжает расти. Однако я не могу сказать, какая именно часть вызывает утечку памяти. Я запускаю скрипт на ВМ Ubuntu 16.04 с 4 ГБ памяти, используя Python 2.7.

Код выглядит следующим образом.

import ahocorasick as ac
a = ac.Automaton()

def create_automaton():
    # Create AC automaton
    with open(COMMON_FILE, "r") as fin_common:
        for common in fin_common:
            common = common.strip()
            a.add_word(common, common)
    a.make_automaton()

def write_output(csv_file):
    com_filename = os.path.basename(csv_file)
    out_com_file = COMMON_CSV_PATH + "ext_" + com_filename
    fout_com = open(out_com_file, "w")

    num_line = 0
    with open(csv_file, "r") as fin_all:
        for line in fin_all:
            num_line += 1
            if num_line % 100000 == 0:
                print "\tFile: %s\tLine %s" % (com_filename, num_line)

            matches = a.iter(line)
            m = next(matches, None)
            if m is not None:       
                fout_com.write("%s" % line)
    fout_com.close()

def main():
    create_automaton()
    for csv_file in glob.glob(CSV_PATH + "*.csv"):
        write_output(csv_file)

if __name__ == '__main__':
    main()

Может кто-нибудь помочь мне выяснить, где утечка памяти есть?

...