Обсуждение в Википедии:Луа


Существует более 87 000 шаблонов таксономии. Модуль: Autotaxobox просматривает эти шаблоны из произвольной начальной точки и создает таксономический список, из которого происходит эта начальная точка. Мне было интересно заменить эти 87 000+ шаблонов серией модулей данных, прежде всего, чтобы другим википедиям не приходилось импортировать (и поддерживать) 87 000+ шаблонов. Но...

Для данных из этих 87 000+ шаблонов потребуется модуль данных объемом 12,5 МБ; слишком большой (я думаю, что есть ограничение в 2 МБ). Итак, чтобы упростить управление, я разделил данные на отдельные модули данных, организованные в алфавитном порядке по первой букве названия таксона. Далее я разделяю списки, содержащие более 2500 названий таксонов, на подсписки по 1000 названий таксонов.

Я написал модуль песочницы, который проходит через набор данных модуля таким образом, который имитирует Module: Autotaxobox. Вы можете увидеть результат на Module talk:Sandbox/trappist themonk/taxonomy . Мой список — это левый список; красивая таблица взята из модуля: Autotaxobox.

Когда мой код проходит по связанному списку названий таксонов, он загружает данные, используя их по mw.loadData()мере необходимости, чтобы получить следующие данные названий таксонов. Если вы просмотрите Module talk:Sandbox/trappist the monster/taxonomy и откроете раскрывающийся список lua ​​logs в данных профилирования Parser, вы увидите, какие модули были загружены. Список также показывает, сколько раз был необходим конкретный модуль данных. Большинство из них загружаются и используются только для одного названия таксона. После этого загруженный модуль продолжает бесполезно потреблять довольно большой кусок памяти, который можно было бы лучше использовать для других целей.

Есть ли способ сбросить (выгрузить) загруженный модуль данных? Я пробовал использовать require()без особого заметного усиления.

Привет! Недавно я начал здесь дискуссию о , на мой взгляд, необходимом изменении в отношении того, как устроен {{ chembox }}. Это один из немногих информационных блоков де-факто, который не следует соглашению об именах и состоит из десятков подшаблонов, чтобы освободить место для необходимой модульной функции. Мне было предложено, что все могло бы быть намного проще, если бы это было переписано в модулях Lua, но мои знания о Lua ограничены небольшими локализованными манипуляциями со строками, поэтому я никоим образом не приближаюсь к необходимому уровню, чтобы справиться с задачей самостоятельно. . Я подумал о том, чтобы обратиться за помощью сюда, и, возможно, некоторым людям было бы интересно присоединиться к обсуждению там, чтобы увидеть причины изменения и детали, которые обсуждаются.) 12:35, 19 ноября 2021 г. (UTC)