Смотря как объединить надо. Если это тупая склейка, то можно вообще без анализа xml обойтись, просто считываем файлы по очереди и пишем в один. Максимум, что может понадобиться - строковыми операциями обнаруживать открывающий и закрывающий корневой тег. Если надо данные интеллектуально перемешать с соблюдением иерархии тегов и значений атрибутов этих тегов, то можете ставить крест на задаче и поздравить того, кто когда-то выбрал формат xml.
Xasthul: можно и без него. Это дополнительный "мост" между python'овским кодом программы и C'шным кодом библиотеки Qt. Грубо говоря, этот декоратор делает вызов обработчика более быстрым и снижает расход памяти на передаваемые ему параметры. Вот про него в книге "Python 3 и PyQt 5. Разработка приложений" Дронова.
Sanes: есть у меня один сервис уже много лет работающий на GAE, в задачи которого входит обеспечение высокой доступности по всему земному шару и возможность обработки миллионов конкурентных соединений. Большая часть соединений быстрая, но некоторые могут дёргать тяжёлый код. Сколько будет стоить содержать десятки если не сотни мощных постоянно работающих VPS в нескольких ДЦ Америки, ещё нескольких Европы и нескольких Азии, а так же сколько усилий понадобится на умное распределение нагрузки между ними и репликацию данных? Я уж не говорю о регулярном обслуживании, бэкапах, обновлениях и т.п.
Sanes: цена кажется высокой только до тех пор, пока приложение работает в масштабах аналогичных одному VPS. Если потребуется разогнать его на понастоящему высокие нагрузки, VPS'ы начнут очень сильно проигрывать по цене. А если нужно больше возможностей, есть Google Cloud Platfowm или AWS.
artshelom: буквы pb в расширении - это от Protocol Buffers. Файлы с расширением pb содержат модель обрабатываемых данных. Её можно описать на любом реализующей ООП языке.