У меня есть две функции, которые обе генерируют случайный шум, но одна из них занимает несколько секунд, а другая работает за миллисекунды.На аппаратном уровне, откуда берется разница?Когда я использую вторую функцию, выполняются ли инструкции параллельно?или весь массив в памяти перемещается в соответствующий массив памяти, где хранится изображение?из случайного импорта случайный
def slow_random():
for i in range(len(bpy.data.images['img'].pixels)):# < pixels are just a list of pixesl color values, where 0 <= value <= 1
bpy.data.images['img'].pixels[i] = random()
def quick_random():
rand = [random() for i in range(len(bpy.data.images['img'].pixels))]
bpy.data.images['img'].pixels[0:] = rand
Вот ссылка на мой смешанный файл.Я не знаю, безопасно ли это.Я могу опубликовать аналогичный вопрос на BlenderStack и загрузить туда файл только через 1,5 часа.скачайте, распакуйте и запустите blender с здесь (занимает несколько минут).Откройте файл, в окне скрипта вы можете нажать Alt + P, чтобы запустить его.Раскомментируйте функции в конце списка.Медленная функция просто замораживает приложение.
Я думаю, @cephner прав, говоря, что это связано с реализацией метода __setitem__
.Поскольку он должен получить доступ к пикселю, изменить его значение и перерисовать его.