Я пытаюсь сделать несколько тестов для различных способов хранения информации в программе python (двоичный файл, сжатый контент и т. Д. c). Я хотел бы получить точные данные о времени, которое фактически требуется для записи и чтения записей, поэтому я хочу избежать любого вида кэширования, которое могло бы оптимизировать тот факт, что я обращаюсь к файлам сразу после их создания, но в которых я не мог полагаться на производственные цели и может закончить тем, что запутает их метрики для моего сравнения.
Я нашел таким образом очистки кэшей / памяти и подумал, что могу просто запустить эти команды из python между записью и чтением всех файлов. Однако для подкачки памяти мне пришлось выполнить команды sudo:
sudo swapoff -a && sudo swapon -a
, что, я думаю, все еще возможно, но усложняет введение его в сценарий python , но для кешей мне нужно не только sudo и добавить некоторые дополнения, которые я даже не уверен, зачем они нужны (получал Permission denied
пришлось добавить sh -c
, хотя это моя рабочая станция , я не s sh -ing):
sudo sync; sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"
Еще хуже, я получаю Segmentation fault (core dumped)
за простой запуск команды с терминала.
Кажется, я не могу найти никакого хорошего и понятного объяснения того, как справиться с этим, и у меня заканчиваются идеи. Конечно, я не первый, кто хочет запустить тест IO производительности «чистым» способом, есть ли более простой способ сделать это в python, которого мне не хватает?