Артём, wine устанавливается в WINEPREFIX. В принципе, ничто не мешает для теста поставить в какой-нибудь ещё один префикс и даже в десяток разных префиксов. Только нужно не забывать перед запуском конечных программ передавать правильные WINEPREFIX & WINEARCH.
Vladimir Nesterow, не бывает "высокой производительности" вообще, она бывает при определённых условиях: нагрузка, структура данных, используемые запросы и их количество, итд итп. То же самое касается и безопасности: она бывает не "вообще", а от конкретных угроз.
Если нет каких-то специальных начальных требований, то лучше брать ту базу, которую лучше знаешь, с её особенностями запросов, компетенциями по их оптимизации и прочее. В конце концов, при необходимости базу можно будет и поменять, ведь SQL он везде почти одинаковый, нужно будет только немного подправить.
Emilka90, использовать async с тредами бессмысленно, так как поток событий должен выполняться в одном треде. Или придётся следить самому, чтобы весь асинхронный код выполнялся в главном треде, а в отдельных тредах - только синхронный код и никакой больше.
В этой функции всё неправильно. Использовать time.sleep в асинхронном коде нельзя, надо использовать asyncio.sleep. Во время asyncio.sleep происходит переключение в поток событий, а при time.sleep программа просто спит. Треды - выбросить и не использовать! Также можно вместо sqlite3 использовать aiosqlite, но если запросы быстрые, то этот блок запросов будет блокировать event loop недолго и с синхронным кодом. Но в каждой итерации цикла обязательно должен быть asyncio.sleep.
Используйю кнопку "вставить исходный код" для оформления кода. Питоновый код без отступов вообще обсуждать бессмысленно - непонятно, что именно в нём делается.