На самом деле после использования программы я увидел проблему, как минимум я пользуюсь k9s и переключать контексты оказалось намного проще, чем подменять конфиги. Я потратил немного времени на то, чтобы разобраться в устройстве конфига и собрать один конфиг из нескольких. Единственная мысль появилась, что было бы хорошо иметь возможность из нескольких конфигов собрать один автоматизированно. Я ещё не искал, решена ли эта задача, но она требуется очень уж нечасто
Тем, что я про него не знал и не нагуглил( Сейчас попробовал, он работает в рамках одного конфига, в принципе, можно слить все конфиги в один и переключаться между контекстами, но пока подход с файлами мне кажется более удобным, так как нет необходимости лезть в сам конфиг
Как раз недавно написал скрипт на Python для помощи в игре. Я выкачал частотный словарь, словарь существительных и частоту использования букв, каждый раз начинаю со слова "осина", так как в нем самые популярные буквы, и дальше уже методом исключения, за 4 дня скрипт пока ни разу не подвёл
Кажется. Я сам перечитываю и у меня есть такое ощущение, но нет, я просто хотел показать, как где-то любая параллельная работа выполняется красиво, а где-то — нет
Это совсем 2 разных языка, боюсь, что это огромная работа — создавать что-то среднее между ними. Если интересно, можете обратить внимание на Nim. Python в принципе в параллельную работу не может из-за высокого уровня абстракции над Си, дело даже не в том, что он на Си основан, а в том, что там слишком много действий, которые требуют синхронизации при параллельном выполнении
Прочёл! Отличная концепция, но как и было сказано в статье — для того, чтобы не было проблем — нужно гарантированное отсутствие go команд, поэтому пока что её можно просто придерживаться
Провёл бенчмарки — запускать асинхронный код синхронно через единично существующий loop намного быстрее, нежели через сгенерированные шаблоны! Ну окей, попытка не пытка, спасибо за хорошую идею!
Шаблон я тоже пишу для себя — я собирался реализовать такие асинхронные и синхронные функции и пользователю выдавать уже готовые для использования — не шаблоны. За ссылку спасибо, обязательно прочту!
Я знаю, я зачем-то смешал горутины из Go и корутины из Python, но я хотел просто обратить внимание на синтаксис. В Go код никак не делится на синхронный и асинхронный, а в Python — это уже 2 разных материка, смешивать функции и корутины становится в разы тяжелее. GIL ведь не управляет асинхронным кодом внутри, он может менеджить его снаружи потока, в котором запущен loop
P.S. Ну в общем если считать, что асинхронность в Python основана на генераторах и на возвращении управлении в цикл, то очевидно, что сравнивать их и нельзя, совсем по разному работают
Согласен, проблема, конечно, в постоянном возвращении управления циклу событий, но и моё решение этого не исправляет. Наверное, это было бы намного лаконичнее, спасибо!
Это упрощает вызов, но по сути синхронная функция не становится асинхронной, просто она в отдельном потоке. Оригинальная же async def отдаёт управление тогда, когда считает это нужным.
Объясните, пожалуйста, что Вы имеете ввиду. Я из приведённых ссылок понял, что у меня есть возможность запустить блокирующую функцию в параллельном потоке в цикле, в котором так же крутятся корутины. Но в итоге блокирующая функция конкурентно не выполняется. Или я что-то неверно понимаю?
Прошло 3 года и я с уверенностью могу сказать, что да, оно отлично решилось через метаклассы. Просто для того, чтобы воспользоваться Вашим советом — мне нужно было понять метаклассы
Но ведь есть легаси... И оно дорогое
На самом деле после использования программы я увидел проблему, как минимум я пользуюсь k9s и переключать контексты оказалось намного проще, чем подменять конфиги. Я потратил немного времени на то, чтобы разобраться в устройстве конфига и собрать один конфиг из нескольких. Единственная мысль появилась, что было бы хорошо иметь возможность из нескольких конфигов собрать один автоматизированно. Я ещё не искал, решена ли эта задача, но она требуется очень уж нечасто
Тем, что я про него не знал и не нагуглил( Сейчас попробовал, он работает в рамках одного конфига, в принципе, можно слить все конфиги в один и переключаться между контекстами, но пока подход с файлами мне кажется более удобным, так как нет необходимости лезть в сам конфиг
Как раз недавно написал скрипт на Python для помощи в игре. Я выкачал частотный словарь, словарь существительных и частоту использования букв, каждый раз начинаю со слова "осина", так как в нем самые популярные буквы, и дальше уже методом исключения, за 4 дня скрипт пока ни разу не подвёл
Кажется. Я сам перечитываю и у меня есть такое ощущение, но нет, я просто хотел показать, как где-то любая параллельная работа выполняется красиво, а где-то — нет
P.S. Ну в общем если считать, что асинхронность в Python основана на генераторах и на возвращении управлении в цикл, то очевидно, что сравнивать их и нельзя, совсем по разному работают
Это упрощает вызов, но по сути синхронная функция не становится асинхронной, просто она в отдельном потоке. Оригинальная же async def отдаёт управление тогда, когда считает это нужным.
Спасибо за ссылку!
Нет, но разве GIL как-то влияет на асинхронный код?
asyncio.run() выполняет корутины, я никогда не заставлю обычную функцию выполнятся асинхронно, так что по сути не решает проблему никак
P.S. Ошибка, нашёл инфу о том, что официальная поддержка async/await появилась только в ES8. Спасибо, исправляю