Побочный эффект сброса при записи файла

Возможный дубликат:
что именно делает python file.flush()?

Я считаю, что вызов метода flush стоит многих операций ввода-вывода, что приводит к дополнительному времени.

Я знаю, что если я удалю флеш в моем скрипте, файл не будет обновлен немедленно.

Поэтому мне интересно, пишу ли я, а не читаю файл, есть ли какой-либо другой побочный эффект удаления флеша из скрипта?

1 ответ

Решение

Побочные эффекты? Я не совсем понимаю, что вы имеете в виду, но в любом случае позвольте мне это сделать.

Для файловых операций Python использует буферизацию операционной системы по умолчанию, если вы не настроите ее иначе. Вы можете указать размер буфера, небуферизованный или буферизированный строкой. Так что если вы постоянно используете flush происходит постоянный ввод-вывод, и если вы сбрасываете большие объемы данных (т. е. большой размер буфера), это может замедлить работу других запущенных программ, которые могут в конечном итоге ожидать ввода-вывода.

Быстрые и частые операции ввода-вывода не годятся для жизни жесткого диска, это увеличивает изменения отказов дисков.

Обычно шаблон, который я придерживаюсь, заключается в том, что после завершения записи в объект файла очистка выполняется в конце перед закрытием файла.

Вам стоит подумать, существуют ли другие потоки или программы, читающие из того же файла, что и вы, пишете? Если это так, у вас могут возникнуть проблемы! Поврежденные файлы очень возможны здесь. Если вы планируете использовать файл в качестве постоянного хранилища данных. Тогда это неправильный способ сделать это. Почему бы не рассмотреть возможность использования постоянных БД (таких как mysql или даже sqlite) вместо использования файла в качестве хранилища данных.

Другие вопросы по тегам