Существует множество причин отклонения во времени выполнения.Изменение ~ 200 мс выглядит правдоподобно для сценария Python, который выполняется в течение нескольких секунд.Основными участниками здесь будут ОС / планировщик и память / кеш.ОС будет обрабатывать прерывания на ядре, на котором работает ваш скрипт, а при блокировке системных вызовов запускается планировщик, который будет запускать фоновые задачи на этом ядре.Пока эти задачи выполняются, они загрязняют кэш-память L1, L2 и L3, так что некоторая часть данных и кода этого сценария python будет перемещена в ОЗУ.Таким образом, ссылки на память всегда будут занимать разное время при каждом запуске, потому что вы никогда не сможете воспроизвести объем памяти фоновых задач, прервавших ваш сценарий.
Если вы работаете в Linux, вы можете попытаться запланировать свой сценарий на процессор, который былотключен от планировщика с помощью параметра загрузки ядра isolcpu =, так что у вас меньше шума от других процессовТогда у вас будет на несколько порядков меньше вариаций, но некоторые будут приходить от использования общих ресурсов - контроллеров памяти, шин ввода-вывода, общего кэша последнего уровня.