Есть ли способ прервать операцию записи на питоне таким образом, что ОС не считает необходимым очистить неписаные данные на диске?Прервать медленный поток на диск после записи?
Я пишу данные на устройство USB, как правило, много мегабайт. Я использую 4096 байт в качестве размера блока для записи, но, похоже, Linux на раннем этапе собирает кучу данных и медленно записывает их на устройство USB. Если в какой-то момент во время записи мой пользователь решает отменить, я хочу, чтобы приложение просто прекратило писать сразу. Я вижу, что существует задержка между тем, когда данные перестают поступать из приложения, а индикатор активности USB перестает мигать. Несколько секунд, обычно до 10 секунд. Я обнаружил, что приложение удерживает метод close(), я предполагаю, ожидая, пока ОС завершит запись буферизованных данных. Я вызываю flush() после каждой записи, но это, похоже, не влияет на задержку. Я просмотрел документы python для ответа, но ничего не нашел.
Это полностью зависит от ОС и файловой системы. «Правильное» поведение (при обычном, асинхронном монтаже) заключается в немедленном возврате функции close(); он должен ждать только флеш, если вы явно fdatasync(). Вероятно, вы вряд ли найдете переносной способ изменить это поведение, так как оно будет сильно различаться в разных системах. (Начиная с XP или около того, Windows даже не записывает кеш на USB-диски по умолчанию.) –