Но ведь Питон то тут не причём… я привёл пример на нём, так как мне нужно было на чёмто привести пример блокирующего приложения…
Но темнеменее 90% кода который я вижу на python — не асинхронный
откройте исходники любого шаблонизатора на python и убедитесь что он блокирующий… И Вам нужно будет постараться чтобы найти неблокирующий шаблонизатор, для node всё наоборот.
Боже!!! Я не сравнивал Tornado и Node… Вам лиж бы холивар завести… Я сравнивал Блокирующий ввод вывод с неблокирующим!!! Для того чтобы читатель понял зачем нужен nonblocking I/O… Кстати честный тест я тоже проводил, и победил Node правда с довольно скромным отрывом… за счёт того что v8, быстрее чем Питон, а также за счёт использования libev а не libevent внутри node.
Спасибо! вот этого действительно JS очень нехватает… Но такой возможности скорее всего никогда не появится, как бы быстро вэб стандарты не двигались =(
Вы точно прочитали статью?
>И я не сомневаюсь, что Питон программист быстренько перепишет мой пример используя threads, так, чтобы он работал как надо, вот только кода станет в 2 раза больше, да и потом поднимите руки те, кто каждый запрос к файловой системе или к базе данных оформляет в отдельный тред!
Согласитесь, что когда понадобится прочитать файл или обратиться к бд, в повседневной жизни скорее всего вы будите использовать блокирующую функцию… И далеко не для всего найдёте неблокирующие реализации… А Node поставил перед собой цель зделать абсолютно весь ввод вывод асинхронным, в стандартных библиотеках, за что и заслуживает внимание уделённое в статье.
Да, не правильно вас понял с начала, если честно не слышал про продолжения… это довольно заманчиво… Я с Вами согласен… А есть ли поддержка продолжений где-нибудь кроме Scheme?
Я не сомневался, но речь то не об этом, откройте любое ваше приложение где вы читаете из файла или делаете запрос к бд, и скажите честно блокирующие они у вас или нет! Конечно на питоне можно написать неблокирующий код, я не сомневался в этом, однако Питон не предоставляет стандартных инструментов для этого, и далеко не все инструменты которые это позволяют так элегантны как reactor.callLater, А давольно часто чтобы написать неблокирующий вызов приходится городить огород с тредами… а на node любой новичёк напишет быстрый неблокирующий код.
Я в курсе, специально сделал это, я хотел показать разницу между блокирующим кодом и неблокирующим, я мог точно также написать второй пример на node используя команду блокировки wait, однако тогда мне былоты гораздо труднее объяснить что большинство на данный момент пишет именно блокирующий код… посмотрите на собственный код, например здесь запись в файл блокирует ваше приложение, а ведь в то время пока вы пишите в файл вы могли бы обслужить следующего пользователя…
так об этом то и речь! Писать на питоне неблокирующий код — не очень просто, а приведённый в статье пример и написан только для того чтобы показать разницу между блокирующим кодом и неблокирующим, обидеть питон здесь никто не хотел, я люблю питон!
Я прекрасно понимаю, но хочу сказать что сделать на питоне sleep без блокирации event loop довольно слоожно и код будет намного длиннее! и большинство программисто которые пишут на python косвенно говоря используют именно sleep, например при обращении к БД они тоже блокируют event loop, точно также! И на данный момент я не видел решений которые предоставляли возможность писать неблокирующий скрипты легко и непренуждённо, как это делает Node.
Значит tornado:
Тем не менее здорово когда платформа изначально заточена под асинхронность!
Но темнеменее 90% кода который я вижу на python — не асинхронный
откройте исходники любого шаблонизатора на python и убедитесь что он блокирующий… И Вам нужно будет постараться чтобы найти неблокирующий шаблонизатор, для node всё наоборот.
>И я не сомневаюсь, что Питон программист быстренько перепишет мой пример используя threads, так, чтобы он работал как надо, вот только кода станет в 2 раза больше, да и потом поднимите руки те, кто каждый запрос к файловой системе или к базе данных оформляет в отдельный тред!