Я использую pygame для проведения эксперимента по познавательной науке.Стандартное время рисования пигама
Я рисую объекты на экране - число которых может сильно различаться: 4 - 24. Я рисую их все сразу, когда все вычислено. Проблема состоит в том, что, очевидно, 24 элемента занимают намного больше времени, чем вычислять, чем 4. Это приводит к изменению времени между тем, когда выдается команда для запуска вычисляемых объектов и их фактического отображения на экране. Это всего лишь несколько миллисекунд, но это экспериментальный шум, которого я бы хотел избежать.
Все объекты must могут быть отображены одновременно.
Ниже приведена функция, которую я написал для этого. Все аргументы передаются программой, извлекающей информацию из кадра данных pandas, вычисленного до начала эксперимента. Возможно, вычисление того, как рисовать элементы из этого DF раньше времени, поможет, если это вообще возможно.
def dot_draw(x_positions, y_positions, RGBs):
for dot in range(0, len(x_positions)):
pygame.draw.circle(screen, RGBs[dot], [ x_positions[dot], y_positions[dot] ], 10)
pygame.display.update()
Спасибо, но я знаю об этом. Надеюсь, моя функция отражает это понимание. 'pygame.display.update()' вызывается только тогда, когда цикл 'for' завершен. Проблема в том, что цикл for может быть передан от 4 до 24 элементов для рисования, поэтому время для его завершения может варьироваться. Мое предпочтение было бы выполнять все такие вычисления загодя, а не на ходу, поскольку эксперимент продолжается. – lnNoam
Если вы знаете, что рисовать заранее, вы можете создать несколько поверхностей с размером экрана, а затем нарисовать их на поверхности, а не непосредственно на поверхность экрана, а затем выложить их на поверхность экрана. – sloth
Моим решением этой проблемы было создание изображений в памяти с помощью matplotlib и просто отображение их с pygame ... Мне не приходило в голову, что мне не нужно оставлять pygame для выполнения этой задачи (т. Е. Использовать несколько поверхностей). Итак, это должно сработать. Спасибо! – lnNoam