Исправление Java G1 ускорит JIT-компиляцию
Улучшение сборщика мусора G1 также снизит нагрузку на оптимизирующий компилятор JDK C2, что благоприятно скажется на развертывании Java в облачных средах.
Частая проблема с приложениями Python - как поделиться ими с другими людьми. Разработчики часто используют веб-интерфейс для решения этой проблемы, представляя функциональность приложения с помощью пользовательского интерфейса. Но такое решение лучше всего работает, когда пользовательский интерфейс приложения естественно подходит для веб-компонентов. Например, приложения для исследования данных могут работать именно так, но для идеальной интерактивности им также требуются внешние компоненты, написанные на JavaScript.
Streamlit - это библиотека для Python, которая призвана решить сразу несколько таких проблем. Используя Streamlit, разработчики могут создавать приложения на Python с веб-ориентированными фронтэндами, построенными на основе богатой библиотеки интерактивных компонентов.
Полученное приложение может быть размещено в любом месте, где есть веб-приложение Python. Самое главное, что разработчику не нужно знать HTML, JavaScript или CSS, чтобы добиться хороших результатов; ему просто нужно писать код на Python, который использует методы и классы Streamlit.
Программы Streamlit написаны в декларативном стиле. Объекты отображаются на веб-странице в том порядке, в котором вы их объявляете в коде. Любое взаимодействие с компонентами приводит к повторному запуску программы сверху вниз, перезагружая веб-страницу, чтобы отразить внесенные изменения.
Вот простой пример приложения Streamlit:
import streamlit as st st.title("Take input from the user") user_input = st.text_input("Say something:") if user_input: st.write("You said:", user_input)
Вот что произойдет, если запустить этот код с помощью Streamlit (с помощью команды streamlit run):
Эти HTML-виджеты и все их поведение генерируются и управляются Streamlit автоматически. Это включает в себя состояние приложения - например, в поле user_input оператор if срабатывает только тогда, когда пользователь что-то вводит.
В Streamlit доступно гораздо больше HTML-компонентов, чем в приведенных здесь примерах. Такие компоненты, как текст в формате LaTeX, диаграммы Боке, ввод данных с камеры и многие другие, доступны изначально.
Для более сложного приложения Streamlit посмотрите этот пример в документации Streamlit. Это приложение загружает общий набор данных о доставке и высадке пассажиров Uber на Манхэттене, сгруппированных по часам. Затем оно отображает время на гистограмме, а местоположение - на интерактивной карте.
Вся программа состоит всего из 30 строк; она достаточно коротка, чтобы вы могли скопировать и вставить ее в файл и запустить самостоятельно. Она также полезна в качестве демонстрации того, как Streamlit делает многие вещи.
Streamlit предлагает множество встроенных поведений для упрощения работы с источниками данных. В качестве основного формата для загрузки и работы с данными он использует фреймы данных.
Вы также можете загружать данные из любого источника, который вы бы использовали в любом другом приложении Python, и Streamlit предоставляет удобства для облегчения этого процесса. Например, приложение для визуализации данных в предыдущем разделе использует Pandas для загрузки CSV-файла с удаленного URL и преобразования его в фрейм данных. Несмотря на удобство, загрузка и форматирование данных могут быть медленными и занимать много времени, особенно если вы загружаете данные через сетевое соединение. Кроме того, программа перезагружается после каждого действия пользователя.
Чтобы избежать этого, Streamlit предоставляет декоратор @st.cache_data, который используется для обертывания функции load_data(). Кроме того, @st.cache_data кэширует данные при многократной перезагрузке приложения, поэтому они загружаются только при первом запуске.
Поскольку дизайн Streamlit заставляет приложение перезагружаться при каждом взаимодействии с пользователем, сохранение постоянного состояния в приложении Streamlit не всегда очевидно. Мы видели, как данные в текстовом поле обрабатывают состояние между запусками. Но если мы хотим создавать и управлять состоянием помимо состояния отдельных элементов управления, нам нужно использовать встроенный в Streamlit объект session_state.
streamlit.session_state - это хранилище ключей-значений, по сути, словарь, который сохраняется между запусками. Когда программа Streamlit запускается в первый раз, это хранилище пусто, поэтому вам нужно проверить наличие ключей, прежде чем пытаться получить к ним доступ.
import streamlit as st # create the key "sayings" if it doesn't exist if 'sayings' not in st.session_state: st.session_state['sayings'] = [] # for convenience, make a reference sayings = st.session_state['sayings'] st.title("Take input from the user") user_input = st.text_input("Say something:") if sayings: # display "sayings" if it has inputs from previous runs st.write("You previously said:", sayings) if user_input: # add to "sayings" if we get an input sayings.append(user_input) st.write("You said:", user_input)
Обратите внимание, что любые данные, хранящиеся в session_state, сохраняются только в течение всего времени работы сервера Streamlit, на котором запущено приложение. Если сервер остановится, данные будут потеряны. Если вам нужны данные, которые сохраняются более длительное время, вам может понадобиться решение вроде базы данных или кэша in-memory, например Redis.
Мы видели, как элементы на страницах Streamlit могут варьироваться от простых текстовых надписей или элементов управления HTML до более сложных элементов, таких как карты, диаграммы, воспроизведение аудио/видео или расширенные возможности взаимодействия, такие как окна чата (например, для взаимодействия с LLM).
Элементы управления Streamlit для отображения данных или взаимодействия с ними уже предварительно настроены для работы с данными в наиболее распространенных случаях использования. Например, веб-виджеты Streamlit могут использовать фреймы данных в качестве источника и автоматически представлять фреймы данных с надлежащей маркировкой столбцов, так что вам не придется добавлять ее вручную.
По умолчанию в Streamlit включена обширная библиотека общих виджетов данных. Еще больше таких компонентов, созданных и распространяемых сообществом пользователей, доступны путем простой установки с помощью pip.
Поскольку приложения Streamlit по своей сути являются веб-приложениями Python, их можно развертывать точно так же, как и любые другие сетевые приложения Python. Быстрый и грязный способ - просто запустить приложение на определенной машине и предоставить к нему доступ через назначенный порт.
Более сложные развертывания также происходят по той же схеме, что и для других веб-приложений Python - с использованием Docker, Kubernetes или различных распространенных облачных сервисов. Пользователи Snowflake в AWS и Microsoft Azure также могут развертывать приложения Streamlit на базе хранилища данных Snowflake. Наконец, Streamlit предоставляет свой собственный хостинг Community Cloud, хотя это удобство и не является обязательным для приложений Streamlit.
Улучшение сборщика мусора G1 также снизит нагрузку на оптимизирующий компилятор JDK C2, что благоприятно скажется на развертывании Java в облачных средах.
Отчет State of DevSecOps показывает, что 90% Java-сервисов подвержены уязвимостям в сторонних библиотеках.
Последнее обновление стандарта JavaScript принесло семь новых возможностей, включая группировку массивов, растущие буферы ArrayBuffers и обещания с резольверами.
Продолжаем добавлять языки программирования для Вас.
Впереди много интересного!
Только свежие новости программирования и технологий каждый день.
Комментарии