Получение более быстрых выводов тем быстрее, чем быстрее я вызываю функцию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), поведение осталось прежним
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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