2016-07-01 2 views
1

Мне было интересно, достаточно ли достаточно Python для кэширования многократно доступных файлов, например. при чтении одного и того же CSV с помощью pandas или размножении одного и того же файла несколько раз.Многократный доступ к файлам кэша Python?

Это даже ответственность Python, или же операционная система позаботится об этом?

+3

Нет, это не так. OS ** делает **. – Bakuriu

+1

Нет, Python не будет кэшировать их. Что, если они изменились в то же время, разве вы не хотели бы знать? Скорее, вы должны написать код, который имеет дело с файлами (и другими относительно медленными операциями ввода-вывода) более разумно. – jonrsharpe

+0

Если вы попытаетесь записать не слишком маленький файл, тогда напишите функцию синхронизации, которая просто вычисляет время, затраченное на чтение файла, и попытайтесь прочитать файл несколько раз * в цикле *, вы увидите, что тайминг падает (Я просто попробовал свой linux-блок, и тайминг сократился вдвое после 5 итераций). Обратите внимание, однако, что кеш можно было очистить довольно быстро, поэтому, если один и тот же файл будет прочитан через 10 или 30 секунд, он может быть не в кеше. – Bakuriu

ответ

3

Нет, Python - это просто язык и на самом деле ничего не делает сам по себе. Отдельная библиотека Python может реализовать кэширование, но стандартные функции, которые вы используете для открытия и чтения файлов, этого не делают. Функции загрузки файлов более высокого уровня в Pandas и CSV-модуле также не выполняют кеширование.

Операционная система может выполнять собственное кэширование, но вы не можете контролировать это изнутри Python.

Смежные вопросы