#python #list #loops #kernel #txt
Вопрос:
Я столкнулся с проблемой мертвого ядра. Я пытаюсь сохранить более 2000 файлов .txt в список списков. my_path
содержит пути к этим более чем 2000 файлам. Я попытался try
— except
как показано ниже, но это не помогло. Ядро, похоже, умирает случайным образом, т. Е. Я пытался найти файлы, в которых оно ломается, но, похоже, оно ломается на файлах, которые не были проблемой во время предыдущего запуска.
my_list = []
for i in my_path:
with open(i) as f:
try:
lines = f.read().splitlines()
#print(f)
my_list.append(lines)
f.close()
except:
print(f)
Я также попытался открыть файлы, в которых ядро умерло отдельно, и, похоже, они работают нормально.
Я предполагаю, что что-то не так с моим циклом?
UPD. Я использую EndeavourOS, Jupyter в VSCode, оперативная память 16 ГБ. Я разделил пути, и, похоже, у меня заканчивается память. Я попытался del ...
gc.collect()
, но безуспешно, он не освобождает память, и как только она превышает 12 ГБ, происходит сбой.
Комментарии:
1. Было бы хорошо, если бы вы могли добавить к вопросу дополнительную информацию, например, об использовании памяти, запущенной системе и т.д.
2. @Timus спасибо, обновлено.
3. Ладно, тогда, я думаю, это
my_list
просто становится слишком большим. С чем ты пытаешься это сделатьmy_list
? Может быть, более ленивый подход позволил бы избежать этой проблемы (например, при необходимости производить линии через генератор)?4. @Timus большое спасибо, я думаю, что вы правы, последнее время становится большим, что перегружает систему. Я не совсем понимаю , что вы имеете в виду
producing the lines through a generator when needed
, но после некоторой проверки данных я просто ограничиваю их первыми 1000 строками, и, похоже, для моего образца это работает нормально.5. Извините за загадочный язык. Я имел в виду следующее: используя генераторы, вы можете создавать объекты, которые могут довольно эффективно обрабатывать большие объемы данных ( «ленивые» ). Доступен ли этот вариант здесь или нет, зависит от того, чего вы хотите достичь, поэтому мой вопрос относительно ваших намерений
my_list
. Если вам интересно, посмотрите, например, здесь (или здесь ).