PyScript слишком медленный и тяжелый, и он не поддерживает все функции и библиотеки, которые вы, возможно, захотите использовать.
В наши дни было много шумихи вокруг возможности запуска кода Python внутри веб-страниц благодаря PyScript, веб-компоненту, который внедряет в вашу веб-страницу ряд тегов HTML, где вы можете… ну… запускать код Python. Конечно, это звучит захватывающе, но JavaScript так сильно развился вместе с веб-браузерами, что я задаюсь вопросом… разве он не лучше?
Что ж, я сделал несколько тестов и, черт возьми… PyScript слишком медленный и тяжелый для загрузки, и он не поддерживает все функции и библиотеки Python (например, очень популярный Plotly, см. ниже)… Итак, в конце концов,
Мне жаль говорить, что я не нахожу PScript полезным и предпочел бы использовать простой JavaScript… если вы не знаете этого языка, в этом случае PyScript может это сделать, но будьте готовы к вашей веб-странице. посетители ждут до минуты, пока запустится код Python, и найдут замену тем библиотекам, которые вы обычно так часто используете!
Не поймите меня неправильно, я признаю, что PScript — отличная идея, и я очень надеюсь, что в будущем он будет работать лучше. Но сейчас шумиха была просто необоснованной и не имела никакой поддержки.
Конкретный пример практического сравнения PyScript и JavaScript
Давайте изучим этот конкретный пример и сравним PyScript с фрагментом кода на JavaScript, основном языке программирования браузера.
Предположим, что ваши навыки веб-разработки минимальны, недостаточны для отображения сюжета с помощью одной из многочисленных библиотек JavaScript. Вы думаете: «Хорошо, я знаю Python, поэтому могу использовать PyScript». Вроде правильно, за исключением того, что Plotly, вероятно, самая популярная библиотека Python для графики, не поддерживается PyScript.
Поэтому вы переходите к альтернативе, такой как Bokeh, и пишете фрагмент кода Python внутри тегов PyScript, внедренных в HTML. Я взял этот конкретный случай и код из примера 2 этой записи в блоге (кстати, настоятельно рекомендуется, если вы хотите начать работу с PyScript!):
Вы можете увидеть результат на этой веб-странице и проверить код, чтобы убедиться, что это делается с помощью Python, работающего внутри тегов PyScript:
https://lucianoabriata.altervista.org/tests/pyscript/example1-plots-in-pyscript.html
Как и в исходном посте, откуда я взял код, вот результат:
Хорошо, выглядит хорошо, но… загрузка заняла 32 секунды! И это не мой компьютер, потому что другие сообщали о подобных задержках... например, этот (тоже отличный) пост в блоге Туваракеша Муралли сообщает о 25 секундах для простого «Hello World!»:
Помимо подчеркивания того, насколько медленно работает код Python, статья Туваракеша подчеркивает другие весьма важные недостатки запуска Python внутри HTML через PyScript. Например, отладка в консоли браузера не очень полезна, и ни VScode, ни другие отладчики не очень полезны. Даже редакторы кода и IDE неправильно обрабатывают и отображают код, поэтому легко запутаться в коде и отступах. Что еще хуже, документация все еще очень ограничена (я бы сказал, почти не существует). Бумер…
Итак, как насчет отображения данных в javaScript?
Я сказал, что мы собираемся провести сравнение. Итак, приведенный выше пример переписан для JavaScript с использованием библиотеки Google Chart:
https://lucianoabriata.altervista.org/tests/pyscript/example1-plots-in-javascript.html
Вы можете убедиться, что график отображается сразу же при загрузке страницы:
Обратите внимание, что это не просто статичный график, а интерактивный: вы можете увеличивать и уменьшать масштаб, получать информацию при наведении курсора на столбцы и т. д. Ничего из этого невозможно в PyScript на сегодняшнюю версию.
И посмотрите, насколько прост код…
<!DOCTYPE html> <html lang=”en”> <body> <script type=”text/javascript” src=”https://www.gstatic.com/charts/loader.js"></script> <script type=”text/javascript”> google.charts.load(“current”, {packages:[‘corechart’]}); google.charts.setOnLoadCallback(drawChart); function drawChart() { var data = google.visualization.arrayToDataTable([ [“Fruit”, “Fruit Counts”, { role: “style” } ], [“Apples”, 5, “blue”], [“Pears”, 3, “blue”], [“Nectarines”, 4, “blue”], [“Plums”, 2, “blue”], [“Grapes”, 4, “blue”], [“Strawberries”, 6, “blue”] ]); var view = new google.visualization.DataView(data); view.setColumns([0, 1, { calc: “stringify”, sourceColumn: 1, type: “string”, role: “annotation” }, 2]); var options = { title: “Fruit Counts”, width: 800, height: 400, bar: {groupWidth: “95%”}, legend: { position: “none” }, }; var chart = new google.visualization.ColumnChart(document.getElementById(“columnchart_values”)); chart.draw(view, options); } </script> <div id=”columnchart_values” style=”width: 900px; height: 300px;”></div> </body> </html>
Есть ли положительные моменты, которые можно спасти для PyScript?
Как утверждает Туваракеш в своей статье, возможность запуска кода Python внутри веб-браузера полезна по разным причинам. Вы можете работать с данными, которые никогда не покидают браузер, не ставя под угрозу его конфиденциальность. И, что важно для меня, при взаимодействии через браузер код Python должен быть немедленно интерпретируемым везде, в любом месте, во всех браузерах всех устройств, без каких-либо установок... просто заходя на веб-страницу.
Но все это уже возможно с помощью JavaScript, который, в свою очередь, работает намного быстрее!
Я думаю, единственный положительный момент в том, что многие люди, особенно специалисты по данным, знают и используют Python в качестве основного языка для своей работы. Ограничение Python, заключающееся в том, что он не работает онлайн в браузерах, теперь смягчается PyScript. Или, по крайней мере, это то, что он намерен сделать.
К сожалению, поскольку многие библиотеки не поддерживаются PyScript, маловероятно, что он привлечет программистов и аналитиков данных к переходу на него. Кроме того, все основные наборы инструментов уже имеют библиотеку JavaScript, и некоторые из них работают очень эффективно. Например, у TensorFlow есть TensorFlow.js.
И еще большая проблема, которая на самом деле влияет не только на PyScript, но и на сам JavaScript, заключается в том, что обычно память и ресурсы, доступные браузеру, ограничены, уж точно слишком ограничены для обработки наборов данных даже среднего размера.
В заключение боюсь, я должен согласиться с объяснениями Туваракеша о том, что, несмотря на то, что PyScript является многообещающим инструментом в будущем, мы не можем извлечь из него реальную пользу сегодня. Это не означает, что он не будет полезен в будущем, но, вероятно, потребуется более тесная и, возможно, более нативная интеграция с браузером.
Еще несколько интересных чтений
Официальный сайт PScript:
Статья, знакомящая с техническими особенностями PyScript:
Вот более простая вступительная статья:
www.lucianoabriata.com Пишу и снимаю обо всем, что лежит в сфере моих широких интересов: природа, наука, технологии, программирование и т. д. Стать участником Medium , чтобы получить доступ ко всем его историям (партнерские ссылки платформы, за которые я получаю небольшой доход бесплатно для вас) и подписаться, чтобы получать мои новые истории по электронной почте. Чтобы проконсультироваться по поводу небольших вакансий, посетите мою страницу услуг здесь. Вы можете связаться со мной здесь.