Здравствуйте. Столкнулся с проблемой оптимизации своего телеграм бота. Он занимаеться парсингом и ищет погоду по запросу в онлайн режиме в 44 городах моей страны. Для каждого города в классе написан парсер как метод класса.
Сейчас я хочу упростить задачу и переделать алгоритм. Хочу сделать словарь где ключом будет город а значением ссылка. Из этого вопрос. Словарь пайтон проитырирует быстрее чем класс?
что бы вам помочь вам надо примести хотя бы пример кода как у вас сейчас реализовано.
и выглядит что узким местом вашего парсера является совсем не скорость итерации
Влад Григорьев,хорошо . вот пример метода класса и осуществления запроса-ответа.
class Ukraine():
@staticmethod
def Alchewskweather():
URL = "https://weather.com/ru-EE/weather/today/l/c8b7d4aa..."
r = requests.get(URL)
s = BeautifulSoup(r.text, "html.parser")
data = s.find_all("div", class_="today_nowcard-temp")
return "Температура в Алчевске : {}".format(data[0].text.strip())
Ukrainiancityesvoc = {
"Алчевск": ukrainecityeswether.Alchewskweather(),
}
if message.chat.type == "private":
if message.text:
for key in Ukrainiancityesvoc.keys():
if key == message.text:
bot.send_message(message.chat.id, Ukrainiancityesvoc[key], reply_markup=markupbackcity)
OdAs, для кода есть сотвествующий тэг, без него разобрать практически не реально что там.
Если у вас весь класс состоит из одного статик метода, то смысла в этом классе нет.
Влад Григорьев, я об этом даже не знал , спасибо большое . Не подскажете как давать запрос и получать ответ по апи?
P.S. клас состоит из 42 статик-методов но для примера я вставил только один
OdAs, ну и в случаях с парсером узким местом будет не лишняя обертка над методами, а ожидания ответа от сайта. так что сначала надо проводить оптимизацию в запросах - а это очереди, асинхронность, кэширование результатов.