Есть ли способ удалить поверхности Pygame? Или какой-нибудь способ удалить их из памяти для увеличения производительности? - PullRequest
0 голосов
/ 08 февраля 2020

Я копирую поверхности в своем файле pygame, но проблема в том, что они просто остаются там. Мое (надеюсь временное) решение состояло в том, чтобы просто переместить их далеко за пределы окна, когда они не используются (то есть (-5000,0)), но это снижает производительность каждый раз, когда я перетаскиваю новую поверхность. Есть ли способ их удалить? del, похоже, не делает этого.

1 Ответ

1 голос
/ 08 февраля 2020

Память Поверхности освобождается, когда на нее больше нет ссылок, когда уборщик мусора Python очищает ее.

Вам не нужно использовать del, просто сделайте запрограммируйте так, чтобы вы нигде не ссылались на неиспользуемые поверхности. Вы можете присвоить ему None, если не иначе.

Иногда вам не нужно постоянно создавать новые поверхности, а просто использовать те, которые у вас уже есть. Но он отлично работает и для создания нового, и Python очищает старое. Я написал несколько скринсейверов, таких как визуализаторы Pygame для VJing и инсталляций, и заставлял их работать в течение нескольких дней, постоянно добавляя новые изображения на экран и удаляя старые, без утечек памяти. И никогда не нужно del.

...