Программа чтения файлов Pycharm работает в режиме отладки, но не работает в режиме выпуска? - PullRequest
0 голосов
/ 14 января 2020

Я написал скрипт, который считывает значения из текстового файла в объект словаря my_dict. У меня есть два файла, один 35 МБ, а другой 4,1 ГБ. В моей системе 8 ГБ памяти и обильный файл подкачки 32 ГБ.

Файлы выглядят примерно так:

dict_key_a 1,2,3,4,5,6 ...

dict_key_b 7,8,9,1, 2,3 ...

...

Вот функция, которую я использую для преобразования их в словари:

import os
import time

def unpack_dictionary(directory, verbose=False):
    start_time = time.time()
    if verbose:
        print("[Reading data from file {}]".format(directory))
    my_dict  = dict()
    file = open(directory)
    count = 0
    for line in file:
        print(count)
        count = count + 1  #I used this to figure out where it is stopping
        id, data = line.split()
        my_dict[id] = list(map(float, data.split(',')))

    file.close()

    file_size = os.path.getsize(directory)

    if verbose:
        print("[Finished reading {} GB in {} seconds]".format(file_size / 1000000000, round((time.time() - start_time), 3)))
    return my_dict

Я работаю в Pycharm, и эта программа всегда быстро читает первый 35 МБ файл. Однако при чтении файла большего размера в 4 ГБ программа всегда останавливается на записи 4188.

Я попытался запустить с отладчиком, и программа работает нормально. Тем не менее, это занимает 20 ГБ моего файла подкачки, что кажется ненужным. Я ожидал максимум 8 ГБ (4 ГБ для чтения файла и 4 ГБ для словаря). Для чего можно использовать всю эту дополнительную память? Я не запускаю никаких других программ ...

В HTOP я вижу, что 86% моей памяти выделяется для виртуальной среды.

Когда я запускаю процесс из моей виртуальной среды, он достигает только 2352 ....

Python 3.6 64-бит в Ubuntu 18

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...