Вместо предисловия
Посидев немного в awesome, я решил вернуться на более привычные, обвешанные множеством нужных и не очень плюшек, кеды (KDE4). Через некоторое время, я решил убрать страшненький самописный виджет карамбы (SuperKaramba) и заменить его более элегантным и простым виджетом плазмы. Требования к нему были простые: это должен быть простенький виджет на панели, который бы отображал в виде текста всю основную (вернее, востребованную мной) информацию. Порыскав по kde-look.org, я нашел
один виджет, который устраивал меня в достаточной мере. Однако, мне нужны были некоторые дополнительные функции, которые не были реализованы в этом виджете. Также, автор не предусмотрел возможность легкой конфигурации виджета, и для его настройки приходилось лезть в исходный скрипт, написанный на JavaScript.
Через несколько итераций настройки уже имеющегося виджета, ввиду отсутствия у меня каких либо представлений о JS, я решил написать свой виджет. Из языков программирования был выбран Python2, в котором я более-менее смыслю. Сказано — сделано. За вечер я написал первую версию виджета, вполне работоспособную. Позже, при тестировании обнаружилось, что он имеет неприятную особенность подвисать во время обновления. Во-первых, это было связано с тем, что все поля обновлялись одновременно. А во-вторых, и это, пожалуй, самое главное — для парсинга файлов с данными (среди них /proc/stat и файл, в котором содержится информация о переданном/полученном трафике) нужна некоторая задержка. Если выставить на них по 0.2 секунды, то в итоге виджет подвисает почти на 0.5 секунд, что заметно даже невооруженным глазом.
Тогда мной была предпринята попытка переписать код, включив DataEngine, который я подсмотрел в исходном виджете. Ниже пойдет речь об использовании этого модуля в Python2.