Anaconda (Spyder) сама по себе является асинхронной программой на Питоне. Поэтому внутри неё не вызвать ещё более асинхронный код. О чем и говорит ошибка: cannot be called from running event loop.
Делал расчет по формулам Бомбара, что будет если пить воду из Финского залива. Получилось, что дневную норму соли получаешь выпив больше 3 литров, т.е. больше, чем в принципе воды нужно. Так что если потерпите кораблекрушение в Финском заливе — пейте на здоровье :).
По умолчанию во всех оконных функциях стоит rows between unbounded preceding and unbounded following.
Если это условие не дописать, то получится одинаковое значение для всех рядов (или для всего окна по партишну, как в данном случае).
Что есть нарастающий итог при двух и более одинаковых идентификаторах? Если две одинаковые даты, то какую из записей считатать первой? Либо надо считать обе одновременно?
Такая постановка вопроса противоречит принципам аналитики, и не зависит от технологии — будь то sql, excel или листок бумаги.
Очевидно, что надо чтобы данные были либо сгруппированы по идентификатору (дате, в данном случае), либо нужны дополнительные параметры для сортировки.
Вполне можно считать это декартовым произведением, ведь соединение проиходит не по равенству, а по нестрогому равенству. Условие только ограничивает высоту таблицы для каждого ряда. Для последней строки будет самое настоящее декартово произведение.
Асинхронный код будет быстрее, если время расходуется не процессором, а ожидает ответа с другой стороны. Синхронный код остается ждать ответа, а асинхронный тем временем продолжает делать еще что-то полезное.
Наиболее разумное применение — скрейпинг. Пример: мне нужно было собрать данные с 4К страниц. Запустил синхронный код, вышло около 25 минут до завершения процесса. По результату обнаружил, что забыл еще один параметр прочитать и поэтому надо было повторять заново. Переписал на асинхронный — вышло около 2,5 минут. Ровно в 10 раз быстрее.
Я начинающий, мне статья понравилась. Я хотел бы прочитать следующую статью из серии.
Много вопросов/комментариев на тему: «не написано вот об этом». Мне как новичку, всегда хочется увидеть минимально работающий код, чтобы понять что именно делает каждая строчка в коде. В полноценной программе сложнее понять, что отвечает за основной функционал, а что отвечает за обработку ошибок, логгирование и т.д.
Anaconda (Spyder) сама по себе является асинхронной программой на Питоне. Поэтому внутри неё не вызвать ещё более асинхронный код. О чем и говорит ошибка: cannot be called from running event loop.
Oracle: http://www.sqlfiddle.com/#!4/73b847/1
PostgreSQL: http://www.sqlfiddle.com/#!17/73b84/1
MS SQL Server: http://www.sqlfiddle.com/#!18/73b847/1
Если это условие не дописать, то получится одинаковое значение для всех рядов (или для всего окна по партишну, как в данном случае).
Такая постановка вопроса противоречит принципам аналитики, и не зависит от технологии — будь то sql, excel или листок бумаги.
Очевидно, что надо чтобы данные были либо сгруппированы по идентификатору (дате, в данном случае), либо нужны дополнительные параметры для сортировки.
Одна корутина ждет ответа откуда-нибудь, тем временем другая делает что-нибудь еще.
Насколько знаю, иногда и такие задержки легко вычисляют, поэтому рекомендуется делать паузу рандомно.
Наиболее разумное применение — скрейпинг. Пример: мне нужно было собрать данные с 4К страниц. Запустил синхронный код, вышло около 25 минут до завершения процесса. По результату обнаружил, что забыл еще один параметр прочитать и поэтому надо было повторять заново. Переписал на асинхронный — вышло около 2,5 минут. Ровно в 10 раз быстрее.
Много вопросов/комментариев на тему: «не написано вот об этом». Мне как новичку, всегда хочется увидеть минимально работающий код, чтобы понять что именно делает каждая строчка в коде. В полноценной программе сложнее понять, что отвечает за основной функционал, а что отвечает за обработку ошибок, логгирование и т.д.