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 , чтобы получить доступ ко всем его историям (партнерские ссылки платформы, за которые я получаю небольшой доход бесплатно для вас) и подписаться, чтобы получать мои новые истории по электронной почте. Чтобы проконсультироваться по поводу небольших вакансий, посетите мою страницу услуг здесь. Вы можете связаться со мной здесь.