игрока, они висят в основном коде бота, запускаются как корутины(в них бесконечный цикл) и при каждом проходе одной итерации цикл вызывает asyncio.sleep(3600). Как это оптимизировать? Знаю что надо бы переписать, но самому нифига кроме threading не лезет
что именно ты собираешься оптимизировать?
чтобы циклы не падали и сильно не занимали основной процесс
мне нужно уменьшить ресурсозатратность и вероятность падения каждого из двух циклов
1. ну будет у тебя поток падать.... чтобы циклы не падали нужно обрабатывать ошибки.
Можешь попробовать с интерпретатором PyPy запускать, если получится
там в основном таймауты только могут быть
2. как ты определял "ресурсозатратность" своей программы? как тебе потоки помогут ее уменьшить?
настало время охуительных советов
ну чтобы циклы не тормозили код
как ты определил что твои "циклы" тормозят код?
в момент когда обрабатывается информация есть небольшие фризы
значит циклв говно, да?)
какая информация, как обрабатывается?
берётся с бд все записи у которых required_xp меньше xp и циклически перебирает всё, для индивидуального высчета каждого уровня, xp, required_xp
с жизнями и голодом конечно просто запрос кидаю в бд(там он один)
а почему бы не отправлять таску чтобы все воркером обрабатывалось celery заюзать
1. у тебя "фризы" происходят раз в час? 2. как ты работаешь с базой?
1. синхронную или асинхронную алхимию? 2. а вот стоило бы замерить и узнать где у тебя узкое место. и связано ли это с IO bound или CPU bound.
пока ты не локализовал проблему, твои попытки как-нибудь что-нибудь оптимизировать не имеют смысла.
Обсуждают сегодня