Во-первых, мне кажется, что введение метода wait только для асинхронных операций - не очень красиво. И не очень очевидно. Я бы предложил реализовать эту фичу и для синхронного режима тоже. Варианты: методы wait/wait_async, что-то вроде аналога asgiref.sync.sync_to_async или вообще декоратор.
Кстати, вместо `await token.wait()` может быть сделать просто `await token` ?
Во-вторых, ваша реализация с помощью while/sleep(0.0001) мне кажется очень неправильной. Смысл asyncio в том чтобы освобождать процессор, а вы заставляете его переключаться в вашу проверку и заново проверять все условия (втч синхронные) - каждый цикл эвентлупа. Простите, но уж лучше я останусь со своим вариантом. Должен сказать, что не могу сразу предложить вариант лучше. Возможно имеет смысл ввести отдельный асинхронный токен. И, возможно, не разрешать его смешивать с синхронными (по крайней мере поначалу). Поскольку, например ваша run_function теоретически тоже может пригодиться быть асинхронной.
Кстати, ваш CounterToken в этом методе лучше вообще принудительно выключать.
Замечание по документации, на которую вы дали ссылку - вы же в курсе что у вас код синхронный в примере? Несмотря на await, все строки кода будут выполняться последовательно. Метод asyncio.create_task подошел бы лучше для вызова do_something.
Безо всей этой асинхронной ерунды ваша реализация выглядит красиво. Не рассматривайте мои предложения как требования - может быть и оставить всё это синхронным..
Было бы удобно завести какой-нибудь токен для asyncio и его друзей.
Например, создаем токен и делаем await на него, после cancel он возвращает управление. Сейчас для таких целей использую asyncio.Event, но ваши токены выглядят удобнее.
В первую очередь хочется избавиться от конструкций вроде таких:
await asyncio.wait([e.wait() for e in stop_events], timeout=10, return_when=asyncio.FIRST_COMPLETED)
Любопытно, что если посмотреть на ту же самую статью, но на английском, то там немного подробнее:
In general, operating system shells use either a command-line interface (CLI) or graphical user interface (GUI), depending on a computer's role and particular operation. It is named a shell because it is the outermost layer around the operating system.
Как пример на картинке приведен скриншот X Window System. Она тоже предоставляла функции, которых не було у Linux/Unix - окошечки, курсорчики, шрифты, мышечка.
Меня, в своё время, учили что BIOS - это часть операционной системы.
Не совсем понятна ваша коннотация к слову "интерн", но выглядит как что-то негативное. Однако, на Мигеля Гринберга бочку катить не надо, пожалуйста. Вы список его репозиториев видели? Лично я использую его python-socketio постоянно.
Ждём через пару дней новость: вслед за CZ из Binance ушли ключевые разработчики и $10 млрд. Еще через пару дней - Минюст США ушел в отставку, а CZ вернулся в Binance.
Я рубист-расстрига, перешедший в Питон. Могу вам заявить что ваше высказывание - это исключительно ваше мнение. Например, я с этим не согласен. Не надо обобщать - это очередной холивар.
Мне кажется что надо бояться не удаления репозитория, а наоборот - того, что в какой-нибудь из таких проектов по "обеспечению анонимности" внезапно тихо не приедет коммит с фичей по "мониторингу качества связи" и отправкой "анонимной" статистики на некий сервер.
Можно сделать десяток мусорных коммитов, среди них внести пару строчек с бэкдором, построить релиз, а в репе так же откатить.
Пока Гвидо прокладывал курс - все двигалось более-менее последовательно. Ну решил он что ++ - это синтаксический сахар. Особенно со всеми этими неопределенностями с `i++ + ++i - ++i` и прочими..
А потом он решил устроить демократию и разрешить парочку PEP добавить контрибьюторам..
На самом деле там в статье символ подчеркивания просто для красоты, поскольку он не используется далее. В реальности это просто имя переменной, в которую будет подставлено значение. Далее эту переменную можно использовать внутри этой ветви.
На хабре pattern matching уже несколько раз описывался, и гораздо подробнее. Немного обсуждения было тут.
Лично моё мнение - там внутри него столько всего наворотили, что упоминать "явное лучше неявного" уж лучше постеснялись бы после этого. Happy debugging, bitches.
На всякий случай, а после "исправления" Австралия всё еще существует? Кто-нибудь оттуда отзовитесь?
Спасибо, но у меня есть несколько замечаний.
Во-первых, мне кажется, что введение метода
wait
только для асинхронных операций - не очень красиво. И не очень очевидно. Я бы предложил реализовать эту фичу и для синхронного режима тоже. Варианты: методы wait/wait_async, что-то вроде аналога asgiref.sync.sync_to_async или вообще декоратор.Кстати, вместо `await token.wait()` может быть сделать просто `await token` ?
Во-вторых, ваша реализация с помощью while/sleep(0.0001) мне кажется очень неправильной. Смысл asyncio в том чтобы освобождать процессор, а вы заставляете его переключаться в вашу проверку и заново проверять все условия (втч синхронные) - каждый цикл эвентлупа. Простите, но уж лучше я останусь со своим вариантом. Должен сказать, что не могу сразу предложить вариант лучше. Возможно имеет смысл ввести отдельный асинхронный токен. И, возможно, не разрешать его смешивать с синхронными (по крайней мере поначалу). Поскольку, например ваша
run_function
теоретически тоже может пригодиться быть асинхронной.Кстати, ваш
CounterToken
в этом методе лучше вообще принудительно выключать.Замечание по документации, на которую вы дали ссылку - вы же в курсе что у вас код синхронный в примере? Несмотря на await, все строки кода будут выполняться последовательно. Метод
asyncio.create_task
подошел бы лучше для вызоваdo_something
.Безо всей этой асинхронной ерунды ваша реализация выглядит красиво. Не рассматривайте мои предложения как требования - может быть и оставить всё это синхронным..
Было бы удобно завести какой-нибудь токен для asyncio и его друзей.
Например, создаем токен и делаем await на него, после cancel он возвращает управление. Сейчас для таких целей использую asyncio.Event, но ваши токены выглядят удобнее.
В первую очередь хочется избавиться от конструкций вроде таких:
Ещё блокчейн надо.
Зашел В Комментарии Чтобы Написать То Же Самое, Но Вы Меня Опередили.
Ну если вам цитата из Википедии снова подойдёт, то вот ещё:
Любопытно, что если посмотреть на ту же самую статью, но на английском, то там немного подробнее:
Как пример на картинке приведен скриншот X Window System. Она тоже предоставляла функции, которых не було у Linux/Unix - окошечки, курсорчики, шрифты, мышечка.
Меня, в своё время, учили что BIOS - это часть операционной системы.
Не совсем понятна ваша коннотация к слову "интерн", но выглядит как что-то негативное. Однако, на Мигеля Гринберга бочку катить не надо, пожалуйста. Вы список его репозиториев видели? Лично я использую его
python-socketio
постоянно.Ждём через пару дней новость: вслед за CZ из Binance ушли ключевые разработчики
и $10 млрд. Еще через пару дней - Минюст США ушел в отставку, а CZ вернулся в Binance.Я рубист-расстрига, перешедший в Питон. Могу вам заявить что ваше высказывание - это исключительно ваше мнение. Например, я с этим не согласен. Не надо обобщать - это очередной холивар.
Ещё немножко мемов.
И не забудьте проверить коммиты хотя бы после форка. Кто знает что туда добавили потом.
Мне кажется что надо бояться не удаления репозитория, а наоборот - того, что в какой-нибудь из таких проектов по "обеспечению анонимности" внезапно тихо не приедет коммит с фичей по "мониторингу качества связи" и отправкой "анонимной" статистики на некий сервер.
Можно сделать десяток мусорных коммитов, среди них внести пару строчек с бэкдором, построить релиз, а в репе так же откатить.
Пока Гвидо прокладывал курс - все двигалось более-менее последовательно. Ну решил он что ++ - это синтаксический сахар. Особенно со всеми этими неопределенностями с `i++ + ++i - ++i` и прочими..
А потом он решил устроить демократию и разрешить парочку PEP добавить контрибьюторам..
Так и появился моржовый оператор и match..
цирк_и_кони_часть2.jpg
На самом деле там в статье символ подчеркивания просто для красоты, поскольку он не используется далее. В реальности это просто имя переменной, в которую будет подставлено значение. Далее эту переменную можно использовать внутри этой ветви.
На хабре pattern matching уже несколько раз описывался, и гораздо подробнее. Немного обсуждения было тут.
Лично моё мнение - там внутри него столько всего наворотили, что упоминать "явное лучше неявного" уж лучше постеснялись бы после этого. Happy debugging, bitches.
Луна в ретроградном Козероге, чёрный петух прокричал два раза, на озере круги - не 16, а 17.5 минут вам наука говорит.
На первой картинке внезапно встретил "DevOps". Что-то мне подсказывает что там должен был быть "Data Scientist", например.
Ещё можно вместо бейджиков просто всем униформу предыдущих "сотрудников" раздать. И охранников с "опытом работы" найдется достаточно.
Элементная база - 30-см техпроцесс, наверное, вот и надо большую чтоб помещалось всё.