Хотя вы получили хорошие ответы, кажется, что никто не ответил на эту часть вашего вопроса (как часто бывает, когда вы задаете много вопросов в вопросе; -) ...:
Относительно размера файла, к чему
максимальный размер этого решения должен быть
ограничено ?. И почему?
Самым важным является то, сколько физической памяти может на самом деле этот конкретный процесс Python использовать (так называемый «рабочий набор»), без чрезмерного ухудшения других аспектов производительности системы в целом. Если вы превысите физическую ОЗУ для своего «рабочего набора», вы будете разбивать на страницы и выгружать и выгружать на диск, и ваша производительность может быстро ухудшаться (до состояния, известного как «перебивание», когда все доступные циклы переходят к задачи ввода и вывода страниц, и незначительное количество фактической работы может быть фактически выполнено).
Из этого общего количества, довольно скромное количество (скажем, не более нескольких МБ в общем), вероятно, будет использовано исполняемым кодом (собственными исполняемыми файлами Python, DLL или .so), а также байт-кодом и общими вспомогательными структурами данных. которые активно нужны в памяти; на типичной современной машине, которая не выполняет другие важные или срочные задачи, вы можете почти игнорировать эти издержки по сравнению с гигабайтами оперативной памяти, которые у вас есть в целом (хотя ситуация может быть другой во встроенных системах и т. д.).
Все остальное доступно для ваших данных - включая этот файл, который вы читаете в память, а также любые другие важные структуры данных. «Модификации» данных файла обычно могут занимать (временно) вдвое больше памяти, чем размер содержимого файла (если вы держите его в строке), - конечно, больше, если вы храните копию старые данные, а также создание новых модифицированных копий / версий.
Так что для использования «только для чтения» на типичной современной 32-разрядной машине с, скажем, 2 ГБ ОЗУ в целом, чтение в память (скажем) 1,5 ГБ не должно быть проблемой; но это должно быть существенно меньше 1 ГБ, если вы делаете «модификации» (и даже меньше, если у вас есть другие важные структуры данных в памяти!). Конечно, на выделенном сервере с 64-разрядной сборкой Python, 64-разрядной ОС и 16 ГБ оперативной памяти практические ограничения раньше сильно отличались - примерно пропорционально разному количеству доступной оперативной памяти.
Например, текст Библии короля Иакова как загружаемый здесь (разархивированный) составляет около 4,4 МБ; Таким образом, на машине с 2 ГБ ОЗУ вы можете хранить около 400 слегка измененных копий в памяти (если больше ничего не запрашивает память), но на машине с 16 (доступными и адресуемыми) ГБ ОЗУ храните более 3000 таких копий.