Всех с пятницей 👋
Ни для кого не секрет, что язык Python назван в честь шоу Летающий цирк Монти Пайтон. Но что вы знаете о шоу? 🤔
Как насчёт Священного Грааля? Знаете ли вы о том, что африканская ласточка способна перенести кокос на другой континент? А как насчёт святой гранаты из серии игр про червячков Worms? Откуда она?
Предлагаю проникнуться духом Монти Пайтон и посмотреть полуторачасовой Святой Грааль вместе. Устроим выходные в стиле Python IT Geek. 💻
P.S. Уже заливаю видео в комментарии к посту. 🍿
Ни для кого не секрет, что язык Python назван в честь шоу Летающий цирк Монти Пайтон. Но что вы знаете о шоу? 🤔
Как насчёт Священного Грааля? Знаете ли вы о том, что африканская ласточка способна перенести кокос на другой континент? А как насчёт святой гранаты из серии игр про червячков Worms? Откуда она?
Предлагаю проникнуться духом Монти Пайтон и посмотреть полуторачасовой Святой Грааль вместе. Устроим выходные в стиле Python IT Geek. 💻
P.S. Уже заливаю видео в комментарии к посту. 🍿
👍6
Посмотрели Монти Пайтон и святой Грааль?
Anonymous Poll
5%
Смотрел в низком качестве
3%
Смотрел в среднем качестве
6%
Смотрел в высоком качестве
12%
Смотрел раньше
2%
Скачал/смотрел в сети
72%
Пока не смотрел
Коротко о четырёх основных способах выполнения кода в Python
Синхронное выполнение 📄
По сути любая программа с переменными, ветвлениями, циклами и прочим, где действия выполняются строка за строкой. Классика, где Python создаёт один процесс с одним потоком внутри.
Многопоточное выполнение 🗂
Берём синхронный код и запускаем функцию несколько раз для "параллельного" выполнения. Снова один Python процесс внутри которого несколько потоков очень быстро переключаются между собой. Настолько быстро, что кажется словно работают одновременно. Но задействуется один поток в одном ядре CPU.
Многопроцессорное выполнение 📚
Основной Python процесс создаёт другие Python процессы. Внутри синхронное выполнение кода в одном потоке. Снаружи несколько процессов выполняемых одновременно разными ядрами/процессорами ПК.
Асинхронное выполнение 🔀
Снова один процесс с одним потоком внутри. Но синхронные функции превращаются в асинхронные сопрограммы - coroutine. Корутины работают по очереди, переключаясь между собой. Похоже на многопоточность, но переключаются не потоки, а функции внутри одного потока.
Синхронное выполнение 📄
По сути любая программа с переменными, ветвлениями, циклами и прочим, где действия выполняются строка за строкой. Классика, где Python создаёт один процесс с одним потоком внутри.
Многопоточное выполнение 🗂
Берём синхронный код и запускаем функцию несколько раз для "параллельного" выполнения. Снова один Python процесс внутри которого несколько потоков очень быстро переключаются между собой. Настолько быстро, что кажется словно работают одновременно. Но задействуется один поток в одном ядре CPU.
Многопроцессорное выполнение 📚
Основной Python процесс создаёт другие Python процессы. Внутри синхронное выполнение кода в одном потоке. Снаружи несколько процессов выполняемых одновременно разными ядрами/процессорами ПК.
Асинхронное выполнение 🔀
Снова один процесс с одним потоком внутри. Но синхронные функции превращаются в асинхронные сопрограммы - coroutine. Корутины работают по очереди, переключаясь между собой. Похоже на многопоточность, но переключаются не потоки, а функции внутри одного потока.
👍7🤯1
В продолжение поста о способах выполнения кода. Немного о том где какой вариант применять
📄 Синхронные решения отлично подходят для небольших, срочных и одноразовых задач. Быстро писать. Легко проводить отладку. Улучшения так же не требуют лишних усилий. И даже если ежечасно парсить сайт и тратить несколько секунд на обработку данных, синхронный код отлично справится с задачей.
🗂 Многопоточные решения создаются для задач с обилием ввода и вывода информации. I/O bound подразумевает ожидание ответов, длительное выполнение запросов и т.п. И пока один поток ждёт свой I/O, другой решает задачу. Тот же пример с парсингом, но не одного, а десятков сайтов одновременно. Быстро по очереди отправляем запросы по одному на поток, а потом обрабатываем в порядке получения ответов.
📚 Многопроцессорные решения нужны для CPU bound задач. Обычно это обработка большого объёма данных, которую можно разбить на части. Например парсим сайт, а он возвращает терабайт в ответ. Каждый процесс обрабатывает свой кусочек терабайта изолировано, а ПК нагружает все ядра процессора. Мы же не зря запустили по одному процессу на каждое ядро CPU.
🔀 Асинхронные решения подходят для I/O bound задач. Стоп! Но ведь потоки для них. Всё верно. Если не придираться к деталям, асинхронный подход можно считать современной альтернативой многопоточных решений. Вполне возможно кто-то из вас сталкивался с потоками в legacy проектах и при обновлении софта менял их на асинхронные корутины.
📄 Синхронные решения отлично подходят для небольших, срочных и одноразовых задач. Быстро писать. Легко проводить отладку. Улучшения так же не требуют лишних усилий. И даже если ежечасно парсить сайт и тратить несколько секунд на обработку данных, синхронный код отлично справится с задачей.
🗂 Многопоточные решения создаются для задач с обилием ввода и вывода информации. I/O bound подразумевает ожидание ответов, длительное выполнение запросов и т.п. И пока один поток ждёт свой I/O, другой решает задачу. Тот же пример с парсингом, но не одного, а десятков сайтов одновременно. Быстро по очереди отправляем запросы по одному на поток, а потом обрабатываем в порядке получения ответов.
📚 Многопроцессорные решения нужны для CPU bound задач. Обычно это обработка большого объёма данных, которую можно разбить на части. Например парсим сайт, а он возвращает терабайт в ответ. Каждый процесс обрабатывает свой кусочек терабайта изолировано, а ПК нагружает все ядра процессора. Мы же не зря запустили по одному процессу на каждое ядро CPU.
🔀 Асинхронные решения подходят для I/O bound задач. Стоп! Но ведь потоки для них. Всё верно. Если не придираться к деталям, асинхронный подход можно считать современной альтернативой многопоточных решений. Вполне возможно кто-то из вас сталкивался с потоками в legacy проектах и при обновлении софта менял их на асинхронные корутины.
👍4👀1
💩2
Поздравляю всех подписчиков канала с Новым годом! 🎄
Творческих успехов, завершённых pet-проектов, меньше горящих дедлайнов и больше кода в удовольствие. 🎁
В новом году вас ждут небольшие посты на канале, интересные авторские статьи на Хабре и конечно же ITшный юмор. 🧑💻
Живите долго и процветайте. До новых встреч. 🖖
P.S. Картинка к посту создана нейросетью специально для этого поста. 🤓
Творческих успехов, завершённых pet-проектов, меньше горящих дедлайнов и больше кода в удовольствие. 🎁
В новом году вас ждут небольшие посты на канале, интересные авторские статьи на Хабре и конечно же ITшный юмор. 🧑💻
Живите долго и процветайте. До новых встреч. 🖖
P.S. Картинка к посту создана нейросетью специально для этого поста. 🤓
🍾8
Встретил на просторах сети эту картинку ☝
Слышали ли вы о том, что ИИ умеет рисовать картины по текстовому запросу?
Модели, обучение, тестирование... Много времени, крутые видеокарты, сложные манипуляции... Ага, как на кадре слева. 🤯
Захотелось научить всех рисовать так же легко и просто, как мост на кадре справа. Ловите ссылку. Делитесь запросами и их результатами в комментариях. 👨🎨
Кстати, со старым новым годом вас 🎄
Слышали ли вы о том, что ИИ умеет рисовать картины по текстовому запросу?
Модели, обучение, тестирование... Много времени, крутые видеокарты, сложные манипуляции... Ага, как на кадре слева. 🤯
Захотелось научить всех рисовать так же легко и просто, как мост на кадре справа. Ловите ссылку. Делитесь запросами и их результатами в комментариях. 👨🎨
Кстати, со старым новым годом вас 🎄
👍4👨💻1
От 🌹 лица 🌹 IT 🌹 сообщества 🌹 поздравляю 🌹 лучшую 🌹 половину 🌹 канала 🌹 с 🌹 международным 🌹 женским 🌹 днём 🌹
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9💅2
О Markdown и Телеграм
Если простыми словами, то Markdown превращает символы в оформление. Это язык разметки, как и HTML. Например двойное подчеркивание ➡️ __ ⬅️ до и после слова делает его курсивным. Как видите Телеграм поддерживает Markdown.
После очередного обновления в Телеграм появилась подсветка синтаксиса. Работает так:
\\
Пишите свои примеры в комментариях
P.S. В прошлых статьях также улучшено форматирование
Если простыми словами, то Markdown превращает символы в оформление. Это язык разметки, как и HTML. Например двойное подчеркивание ➡️ __ ⬅️ до и после слова делает его курсивным. Как видите Телеграм поддерживает Markdown.
После очередного обновления в Телеграм появилась подсветка синтаксиса. Работает так:
\\
\\ \\` python # три открывающих апострофа и название вашего ЯП
Ваш код
\ \ \ # три закрывающих апострофаpython
print('Hello world!')Пишите свои примеры в комментариях
P.S. В прошлых статьях также улучшено форматирование
👍6🆒1
А давайте устроим новогоднее чудо и проголосуем за Python в финале битвы языков программирования 🎄 ❤️🔥
https://tproger.ru/articles/final-bitvy-yazykov-programmirovaniya-v-2023-godu
https://tproger.ru/articles/final-bitvy-yazykov-programmirovaniya-v-2023-godu
Please open Telegram to view this post
VIEW IN TELEGRAM
Tproger
Лучший язык программирования 2023: финал
В финале батла лучших языков программирования за первое и второе место сразились C# и Python, за третье и четвёртое место — JS и Golang.
🎄3❤🔥1💯1
Итоги голосования. Python на втором месте 🥈 Не хватило всего 30 голосов. Мы могли это сделать. Но сделаем в следующем году
А пока всех с наступающими праздниками. Да прибудет с вами любимый язык программирования ❤️
А пока всех с наступающими праздниками. Да прибудет с вами любимый язык программирования ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
Tproger
Лучший язык 2023 — материалы для программистов
Баттл языков программирования — читатели Tproger выбирают лучший язык в 2023 году.
❤2👏1👨💻1
Добрый вечер, коллеги!
С наступившим 2024 годом. Как ваше самочувствие? Может хотите маринованных огурчиков, огуречного рассола? 🥒
Модуль pickle
Помимо всем привычного и безопасного JSON для сериализации и десериализации данных в Python есть модуль pickle, выполняющий аналогичные действия с питоновскими объектами
Важно! Модуль pickle небезопасен. Распаковывайте только те данные, которым вы доверяете.
Держите простой пример маринования трёх объектов в один файл:
С наступившим 2024 годом. Как ваше самочувствие? Может хотите маринованных огурчиков, огуречного рассола? 🥒
Модуль pickle
Помимо всем привычного и безопасного JSON для сериализации и десериализации данных в Python есть модуль pickle, выполняющий аналогичные действия с питоновскими объектами
Важно! Модуль pickle небезопасен. Распаковывайте только те данные, которым вы доверяете.
Держите простой пример маринования трёх объектов в один файл:
import pickleВ результате получим бинарный data.pickle с неудобным для чтения человеком содержимым, примерно таким:
obj1 = {'name': 'Alice', 'age': 25}
obj2 = [1, 2, 3, 4, 5]
obj3 = ('a', 'b', 'c')
with open('data.pickle', 'wb') as f:
pickle.dump(obj1, f)
pickle.dump(obj2, f)
pickle.dump(obj3, f)
� }�(� name�� Alice�� age�K u.� � ]�(K K K K K e.� � � a�� b�� c���.Но если спустя время нам понадобятся наши словари и списки, достаём разносолы из файла:
import pickleУспехов в новом году. И не только в консервациях 😉
with open('data.pickle', 'rb') as f:
loaded_obj1 = pickle.load(f)
loaded_obj2 = pickle.load(f)
loaded_obj3 = pickle.load(f)
print(loaded_obj1) # {'name': 'Alice', 'age': 25}
print(loaded_obj2) # [1, 2, 3, 4, 5]
print(loaded_obj3) # ('a', 'b', 'c')
👍6🔥1😈1
Продолжаем мариновать объекты Python. Начало тут
Чем же так небезопасен pickle? В первую очередь программистом, который его использует неправильно.
Ловите пример:
Но почему так? Дело в том, что модуль выполняет дандер
😉
Чем же так небезопасен pickle? В первую очередь программистом, который его использует неправильно.
Ловите пример:
import pickleВ результате загрузки данных из строки байт в терминал отправится сообщение "Hello world!". Немного не то, для чего создавался модуль. Кстати, в переменной res будет хранится ноль, а не текст или команда.
res = pickle.loads(b"cos\nsystem\n(S'echo Hello world!'\ntR.")
Но почему так? Дело в том, что модуль выполняет дандер
__reduce__ замаринованного объекта в процессе преобразования файла/строки в объекты Python.import pickleОтличных новогодних праздников. И не стреляйте себе в ногу
import os
class MaliciousCode:
def __reduce__(self):
# При вызове функции pickle.load() будет выполнена команда удаления всех файлов в текущей директории
return (os.system, ('rm -rf *',))
malicious_object = MaliciousCode()
with open('data.pickle', 'wb') as file:
pickle.dump(malicious_object, file)
with open('data.pickle', 'rb') as file:
loaded_object = pickle.load(file)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🍾1
Праздники подходят к концу. А идеи для канала регулярно появляются 💡
Начнём пост с функции генерации уникальных токенов:
Вспомнили? Тогда перепишем код покороче:
в теле цикла , много чего делает в условии цикла .
Забирайте лайфхак в копилку😉
Начнём пост с функции генерации уникальных токенов:
# Импортируем функцию token_urlsafe из модуля secretsА теперь вспомним про моржовый оператор в Python. Писал про него 🔗тут и 🔗тут.
from secrets import token_urlsafe
# Определяем функцию generate_token с параметрами n и prefix, по умолчанию n=5, prefix='/'
def generate_token(n=5, prefix="/"):
"""Генерирует токен с префиксом для короткого url размерностью n без символа "-" в токене."""
# Входим в бесконечный цикл
while True:
# Генерируем случайный токен и добавляем префикс
token = f"{prefix}{token_urlsafe(n)}"
# Проверяем, содержит ли токен символ "-"
if "-" not in token:
# Если не содержит, то выходим из цикла
break
# Возвращаем значение переменной token
return token
Вспомнили? Тогда перепишем код покороче:
from secrets import token_urlsafeЦикл, который ничего не делает
def generate_token(n=5, prefix="/"):
while "-" in (token := f"{prefix}{token_urlsafe(n)}"):
pass
return token
Забирайте лайфхак в копилку
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2✍1
Для начала признаюсь, что не люблю однострочники. Особенно те, которые уходят за край второго 😱 монитора. Код должен быть в первую очередь читаемым и понятным. Но моржовый оператор из прошлого поста вызывал бурную активность в узких кругах. Поэтому ловите финальную версию:
Финальная версия, из прода. Ещё тёплая. Тёплых вам выходных🫶
✍️ - беру на вооружение
🤯 - как это работает?
🎉 - пятница, время отдохнуть от кода
from secrets import token_urlsafe
def generate_token(n=5, prefix="/"):
"""Генерирует токен с префиксом для короткого url размерностью n, исключая символы двойного прочтения."""
while (token := token_urlsafe(n)) and any(char in token for char in ("-", "_", "O", "l", "I", "0", "1",)):
pass
return f"{prefix}{token}"
Финальная версия, из прода. Ещё тёплая. Тёплых вам выходных
Please open Telegram to view this post
VIEW IN TELEGRAM
✍6🤯4🎉3
Какие IDE и редакторы кода вы использовали?
Anonymous Poll
81%
PyCharm
56%
Visual Studio Code
16%
IntelliJ IDEA
31%
Sublime Text
10%
Atom
27%
Notepad++
7%
Eclipse
15%
Nano
22%
Vim
7%
Другие...
👍3
Сейчас PyCharm активно вошёл в мою жизнь. Python основной ЯП, поэтому нет смысла изобретать велосипед. Но даже для Python вполне можно использовать Visual Studio Code или IntelliJ IDEA. А можно покодить в Sublime Text, Atom или Notepad++.
Если же выйти за рамки змеиного языка, вспоминаются другие продукты JetBrains, а также Eclipse, Nano и Vim.
А какими IDE и редакторами кода пользуетесь вы? Чем пользовались раньше? Пиши в комментариях и голосуйте в опросе выше☝
Продолжение в комментах...
Если же выйти за рамки змеиного языка, вспоминаются другие продукты JetBrains, а также Eclipse, Nano и Vim.
А какими IDE и редакторами кода пользуетесь вы? Чем пользовались раньше? Пиши в комментариях и голосуйте в опросе выше☝
Продолжение в комментах...
👍2🔥1