Получение более быстрых выводов тем быстрее, чем быстрее я вызываю функциюPython

Программы на Python
Гость
Получение более быстрых выводов тем быстрее, чем быстрее я вызываю функцию

Сообщение Гость »


Я использую PyTorch для быстрого вывода изображения. Я заметил (и это скорее проблема измерения Python): чем быстрее я пропускаю изображения через свой конвейер, тем быстрее в среднем происходит каждый вывод.

Ниже опубликован код и то, как я измеряю время, необходимое для выполнения каждого вывода. При работе на частоте 10 Гц или около того среднее время на 1000 выводов составляет около 1 мс. При работе на частоте 1000 Гц среднее время на 1000 выводов составляет 500-600 мкс. Так что есть существенный прирост. Это происходит как при выводе процессора, так и графического процессора.

Я думаю, это должно быть одно из трёх:
[*]Я измеряю неправильно [*]Более быстрый вызов вывода дает некоторое повышение производительности. [*]Какой-то другой фрагмент кода в том же мультипроцессе использует GIL, но только когда он работает медленнее? (последнее для меня не имеет смысла)
Есть идеи?

попробуйте: self.new_img = image_queue.get(False) t1 = timeit.default_timer() решение = self.inference_model(self.new_img) self.total_time += timeit.default_timer() - t1 self._counter += 1 если self._counter % 1000 == 0: print("Среднее время:", self.total_time/1000) self.total_time = 0 кроме очереди.Пусто: проходить def inference_model(self, img): выходные данные = self.model(img) _, прогноз = torch.max(outputs.data, 1) self.output = outputs.data.tolist()[0] вернуть предсказанный.item() Изменить:

Основываясь на комментарии здесь, я вернулся и понял, что, возможно, проблема вызвана моей попыткой/исключением в очереди. Вот как выглядит код (отредактировано выше)

Редактировать2:

Изменено на get() с get(False), поведение осталось прежним

Вернуться в «Python»