X Ошибка неудачного запроса: BadAlloc (недостаточно ресурсов для работы) при запуске tkinterPython

Программы на Python
Ответить
Anonymous
 X Ошибка неудачного запроса: BadAlloc (недостаточно ресурсов для работы) при запуске tkinter

Сообщение Anonymous »

Я обнаружил следующее сообщение об ошибке при запуске скрипта Python, над которым я работаю. Это произошло, когда tkinter загружал около 1800 миниатюр изображений, каждое размером 200x200 пикселей, в отдельные кнопки ttk.Checkkbuttons. Этот процесс не был завершен, и программа аварийно завершила работу с этим сообщением об ошибке.

Код: Выделить всё

X Error of failed request:  BadAlloc (insufficient resources for operation)
Major opcode of failed request:  53 (X_CreatePixmap)
Serial number of failed request:  140089
Current serial number in output stream:  140097
Система, в которой я запускал этот скрипт Python tkinter, имеет большой объем оперативной памяти. До сбоя программы использование оперативной памяти составляло всего около 10%.
Я не понимаю этого сообщения об ошибке. Можете ли вы объяснить, что вызывает эту ошибку? Вызвана ли эта ошибка ограничением пакета tkinter или аппаратного обеспечения системы (например, ОЗУ, графического процессора и т. д.)? В любом случае, как это преодолеть?
Я нашел похожий вопрос, но он был опубликован 9 лет назад. Не знаю, актуально ли это еще. Благодарим за помощь.
Обновление:
После того, что было опробовано по аналогичному вопросу, я добавил:

Код: Выделить всё

Option         "VideoRam" "65536"
Option         "CacheLines" "1980"
в сегмент раздела «Устройство» файла /etc/X11/xorg.conf , то есть сейчас:

Код: Выделить всё

Section "Device"
Identifier     "Device0"
Driver         "nvidia"
VendorName     "NVIDIA Corporation"
Option         "VideoRam" "65536"
Option         "CacheLines" "1980"
EndSection
Ошибка изменилась на:

Код: Выделить всё

X Error of failed request:  BadAlloc (insufficient resources for operation)
Major opcode of failed request:  53 (X_CreatePixmap)
Serial number of failed request:  128544
Current serial number in output stream:  128552
Текущий серийный номер в выходном потоке: 140097 уменьшен до 128552.
Здесь дается объяснение XCreatePixmap. В нем говорится, что BadAlloc возникает, когда серверу не удалось выделить запрошенный источник или память сервера.
Я попытался создать тестовый код для имитации ошибки. Хотя смоделировать ошибку X BadAlloc не удалось, он обеспечивает упрощенное представление сценария, когда ошибка произошла в моем коде. Тем не менее, я узнал, что максимальное количество строк или столбцов сетки, разрешенное tkinter, составляет

Подробнее здесь: https://stackoverflow.com/questions/754 ... tion-while
Ответить

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

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

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

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

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