Задать вопрос
  • Как в telethon отслеживать сообщения с нескольких аккаунтов параллельно?

    @mgearr
    Использовать треды, когда уже используется asyncio - грязноватая методика. Иногда, конечно, это имеет смысл, но в данном случае можно (и нужно?) обойтись одним asyncio. Вот кабы библиотека была синхронная, то другое дело, треды были бы в тему. Но она асинхронная

    Гуглить на тему gather и concurrent tasks
    Сцылочка на соответствующий пунт штатной документации: Running Tasks Concurrently. Там в примере почти в точности точно то, что нужно

    Или, может быть, лучше сделать через wait и обрабатывать события более тонко/гибко/сложно
    Ответ написан
    Комментировать
  • Почему не устанавливаются vk_api и vk для Python?

    @mgearr
    Пишет же чёрным по белому: уже установлено (Requirement already satisfied: vk_api)
    Ответ написан
  • Как заставить elif вернуться к циклу while True для повтора самого цикла?

    @mgearr
    break - прервать цикл
    continue - запустить с начала
    Ответ написан
    Комментировать
  • Как использовать питон в сборе и анализе данных финансисту?

    @mgearr
    Есть очень большой смысл использовать питон для анализа данных, но для этого желательно владеть техническим английским без словаря, потому что почти вся документация - на инглише

    В само программирование не обязательно заквпываться глубоко. Синтаксис на питоне не шибко сложный, ну а математика - она и в Африке математика, почти одинаковая на компе и на бумаге

    Самые популярные прибамбасы для расчётов на питоне называются pandas и SciPy. Ещё надо рисовать графики. Инструментов для рисования - вагон и маленькая тележка, но для начала можно глянуть в сторону Plotly. В самом простом варианте графики рисуются в одну строчку кода

    Для чтения из 1С надо настроить читалку данных, но это, в общем, несложно, тоже, скорее всего, 1-2 строчки, причём, не меняющихся

    Всё это безобразие надо где-то запускать, делать быстрые прикидки, проверять гипотезы. Специально для таких целей разработана невероятно удобная среда - Jupyter Notebook. Написал формулу и тут же увидел результат

    Для начала работы, конечно, было бы неплохо, чтобы более опытные товаризчи всё это установили, настроили и показали, как ставить недостающие модули, потому что обязательно захочется дополнительных модулей. В принципе, ставится не сложнее, чем винда или линукс, но с нуля ставить всё-таки сложновато

    Сами выборки и рисование, по мне, делаются проще, чем на экселе (у экселя язык запросов, по мне, совершенно инопланетянский). Пример графика численности населения из штатной документации Plotly. Я немножко упростил для наглядности и добавил комментарии:

    data_canada = px.data.gapminder().query("country == 'Canada'") # выборка по Канаде
    px.bar(data_canada, x='year', y='pop') # собственно рисование


    В отличие от Excel, на питоне нет визуальных конструкторов запросов. Все выборки делаются ручками с клавиатуры. Зато сколько-то сложные расчёты делать в разы удобнее, чем в ёкселе. И наоборот: простые графики как раз-таки удобнее рисовать на ёкселе
    Ответ написан
    2 комментария
  • Pool vs ThreadPool или как задействовать все процессоры с максимальной отдачей?

    @mgearr
    Ну а как вообще запускать параллельные треды на питоне?
    На чистом питоне - видимо, никак. Ведь именно для того знаменитый GIL и сделали, чтоб нельзя было. На C и CPython - можно, но это уже выход за рамки питона

    Стандартный питоновский путь - вместо тредов использовать процессы. При этом, естественно, расходуется больше памяти и прочих ресурсов, зато легче избегать конфликтов чтения-записи (race conditions)

    Также можно поискать библиотеки с распараллеливанием нужной задачи. Или можно просто запускать внешние процессы, которые "умеют в треды". Причём всё равно лучше это делать через пул процессов, потому что проц хорошо нагружается, если процессов больше, чем ядер/потоков. Размер пула надо подбирать опытным путём, потому что с какого-то количества одновременных задач общая производительность начнёт падать из-за перегрузки планировщика и ввода-вывода
    Ответ написан
    Комментировать