Интересные заметки и обучающие материалы по Python
Контакт: @paulwinex
⚠️ Рекламу на канале не делаю!⚠️
Хештеги для поиска:
#tricks
#libs
#pep
#basic
#regex
#qt
#django
#2to3
#source
#offtop
Post #438
339
WebAssembly это мощная технология позволяющая загружать практически любое приложение в браузер.
Это специально собранный бинарник
✅ Что то дает:
▫️Скорость работы. В данный момент лидером по совместимости является Rust, а значит вы можете написать сложное приложение не на JS а сразу на Rust и встроить это в страницу сайта. На wasm работают различные графические и видеоредакторы где скорость выполнения важна! Например Figma.
▫️Портирование приложений ранее недоступных в браузере. Например вот вам браузерная сборка ffmpeg
▫️Выполнения тяжелого кода на стороне клиента. Это важная возможность! Вместо того, чтобы грузить свой бэкенд тяжелыми расчетам, недоступными в JS приложениями, мы просто переносим это на сторону юзера. Каждый клиент загружает своё железо.
😎 Ну и конечно же есть сборка Python для wasm, это библиотека pyodide
▫️настоящий интерпретатор прямо в браузере!
▫️поддерживает обычный py-код
▫️поддерживает async
▫️есть все популярные c/rust-библиотеки собранные под wasm
▫️доступна виртуальная файловая система для работы с файлами
😖 Есть и ограничения:
▫️Нет чистых TCP/UDP сокетов. Используется браузерное API. А значит все ограничения запросов от браузера (CORS например).
▫️Нет multiprocessing. Это вам не ос, а браузер. Тут процессы не имеют смысла.
▫️threading тоже ограничен, обычно используется Web Workers браузера.
▫️Расширения на С не поддерживаются совсем, но в официальной коллекции пакетов pyodide есть всё нужное уже собранное под wasm32. Но таких библиотек как psutil по понятным причинам нет и не будет.
▫️Производительность ниже чем чистый CPython
▫️Файловая система в RAM, а значит много не запишешь, сохранять там что-то бесполезно. Нужно выводить файлы в Local Storage браузера.
▫️Установка пакетов только из whl и zip, включая скачивание по URL. Никакой установки через git так как самого git нет.
Сделал пример HTML файла с библиотекой Pillow↗️. Всё считается на стороне клиента в браузере.
#libs
Это специально собранный бинарник
.wasm (не dll и не so) который одинаково запустится в браузере на любой ос.✅ Что то дает:
▫️Скорость работы. В данный момент лидером по совместимости является Rust, а значит вы можете написать сложное приложение не на JS а сразу на Rust и встроить это в страницу сайта. На wasm работают различные графические и видеоредакторы где скорость выполнения важна! Например Figma.
▫️Портирование приложений ранее недоступных в браузере. Например вот вам браузерная сборка ffmpeg
▫️Выполнения тяжелого кода на стороне клиента. Это важная возможность! Вместо того, чтобы грузить свой бэкенд тяжелыми расчетам, недоступными в JS приложениями, мы просто переносим это на сторону юзера. Каждый клиент загружает своё железо.
😎 Ну и конечно же есть сборка Python для wasm, это библиотека pyodide
▫️настоящий интерпретатор прямо в браузере!
▫️поддерживает обычный py-код
▫️поддерживает async
▫️есть все популярные c/rust-библиотеки собранные под wasm
▫️доступна виртуальная файловая система для работы с файлами
😖 Есть и ограничения:
▫️Нет чистых TCP/UDP сокетов. Используется браузерное API. А значит все ограничения запросов от браузера (CORS например).
▫️Нет multiprocessing. Это вам не ос, а браузер. Тут процессы не имеют смысла.
▫️threading тоже ограничен, обычно используется Web Workers браузера.
▫️Расширения на С не поддерживаются совсем, но в официальной коллекции пакетов pyodide есть всё нужное уже собранное под wasm32. Но таких библиотек как psutil по понятным причинам нет и не будет.
▫️Производительность ниже чем чистый CPython
▫️Файловая система в RAM, а значит много не запишешь, сохранять там что-то бесполезно. Нужно выводить файлы в Local Storage браузера.
▫️Установка пакетов только из whl и zip, включая скачивание по URL. Никакой установки через git так как самого git нет.
Сделал пример HTML файла с библиотекой Pillow↗️. Всё считается на стороне клиента в браузере.
#libs
- ❤ 3
