Будет ли размещаться весь файл в оперативной память при использовании следующей конструкции
Меня интересует будет ли файл загружаться полностью в оперативную память при использовании моей конструкции, которая должна выводить случайную строку из файла. Может есть способ лучше реализовать это? И как можно выгружать этот файл из оперативной памяти (в этом же коде) после вывода строки?
from random import randint
n1 = randint(0,9)
with open('lines.txt', 'r') as file:
lines = file.readlines()[n1]
print(lines)
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
Вызов file.readlines() - прочитает в память все строки файла. После этого вызова эти данные не используются и поэтому при следующем вызове сборщик мусора освободит эту область памяти.
В данном случае можно воспользоваться itertools.islice:
from itertools import islice
with open('lines.txt', 'r') as file:
line = list(islice(file, n1, n1+1))[0]