Python & WebAssembly Плюс Наука Равняется Пиодиду


На основе йодида у нас теперь есть Пиодид, который позволяет интерпретатору Python работать внутри браузера и создавать там живые документы, тем самым привнося науку о данных в браузер.

Как мы видели в разделе «Запуск VSCode в браузере», переносимость-это новая востребованная тенденция. И под этим мы подразумеваем легкость запуска всего внутри вездесущего браузера, будь то IDE, игра или интерпретатор. 

Pyodide-это детище Python от Iodide, попытка привнести Javascript и науку в браузер. Йодид уже был успешным, но поскольку Javascript не имел четко определенного научного стека, в то время как Python имеет, была предложена идея замены JavaScript на Python. И, таким образом, Пиодид.

Решение состояло в том, чтобы заставить интерпретатор Python работать внутри виртуальной машины Javascript браузера, и, в отличие от сервера кода VSCode, который имеет серверную часть, с которой взаимодействует клиент/браузер, интерпретатор Python загружается исключительно на клиентскую сторону браузера без каких-либо удаленных компонентов.

Это происходит из-за магии Webassembly, которая позволяет компилировать языки, отличные от Javascript, для использования внутри браузера. Например, Perl с WebPerl. Идея здесь заключается в том, что ваш код Perl, или Python, или что-то еще, не переводится на JavaScript, а вместо этого их соответствующие интерпретаторы/двоичные файлы переносятся на WebAssembly, который впоследствии нацеливается на виртуальную машину Javascript, живущую внутри браузера.

В случае Pyodide это был интерпретатор Python, за которым быстро последовала поддержка Numpy, Pandas и Matplotlib, на сегодняшний день наиболее часто используемых модулей в научной экосистеме Python, а затем поддержка Scipy и scikit-learn.Так что не только Python, но и Python+Научный стек.

Стоит отметить, что Pyodide имеет полный доступ к веб-API браузера.Это означает, что в то время как загрузка и обработка данных выполняется на Python, результаты передаются Javascript и WebGL для построения графиков с использованием, например, библиотек JS, таких как d3.

Это также позволяет получить доступ к DOM через Python, не касаясь Javascript, но поскольку WebAssembly в настоящее время не может напрямую получить доступ к DOM, это происходит через прокси-сервер.Чтобы получить доступ к любому веб-API, WebAssembly должен вызвать JavaScript, который затем вызывает веб-API. Таким образом, Emscripten создает HTML-и JavaScript-код, необходимый для достижения этой цели.

В Pyodide вы делаете это, импортируя объект документа из JavaScript на сторону Python.

из документа импорта js

а затем начните вызывать методы на нем из Python:

document.getElementById(«myElement»)

В этом примере мы создаем виджеты пользовательского интерфейса:

%% pyfrom js import iodidebutton = iodide.output.element(‘button’)button.textContent = «Click me!»count = 0def onclick(evt): глобальный счетчик, если elt.style.backgroundColor == ‘rgb(255, 255, 255)’: elt.style.backgroundColor = ‘#ffcccc’ elt.innerText = «Я был изменен» + str(count) + » раз!»

  ещё:     elt.style.backgroundColor = ‘#ffffff’ elt.innerText = «Я был изменен» + str(count) + » times!» count += 1button.addEventListener(‘click’, onclick)

Существует продолжающаяся дискуссия, основанная на неспособности текущей веб-сборки напрямую вызывать WebAPI без вмешательства Javascript. Дискуссия заключается в том, собирается ли WebAssembly сделать Javascript устаревшим, поскольку вы можете запрограммировать браузер на любом языке, поддерживаемом Webassembly.Если прямой доступ к DOM возможен, то у вас может быть дело.

Хотя Пиодид основан на йодиде, он может использоваться автономно в любом контексте, где вы хотите запустить Python в веб-браузере. Однако йодид является основой инструмента, с помощью которого вы можете создавать живые документы в браузере, состоящие из вашего кода, графиков, таблиц данных, даже интерактивных визуализаций в одном документе, запускать свой код и наблюдать его результаты исключительно в браузере.Кроме того, вы можете экспортировать свою записную книжку и поделиться ею, чтобы другие могли легко получить доступ к источнику, а также реплицировать и расширять вашу презентацию.

Их репо на Github с инструкциями по установке можно найти в project Iodide и project Pyiodide, а также на интерактивной игровой площадке во время краткой экскурсии по Pyiodide, где вы можете провести свои эксперименты и испытать, как это работает, не устанавливая ничего.

Вот и все;Python после науки о данных тоже завоевывает браузер. 


Добавить комментарий