Python ментор
#interview, #python По моему опыту, ни одно собеседование на python-разработчика независимо от уровня не обходится без вопроса, про изменяемые/неизменяемые типы данных 😮. Звучать вопрос может по-разному: • Какие типы данных есть в python? • Какие типы данных…
#interview, #python
Зачем нужно знать про изменяемость объектов в python?
Сразу закономерный вопрос: “зачем вообще все это нужно?” И опытные интервьюеры также могут спросить это у вас 🧐. Мне очень нравится этот вопрос, он показывает, что человек не просто зазубрил правильный ответ про типы данных, а понимает почему это важно ☝️!
Без лишних слов! Этот пример иллюстрирует все очень наглядно. Смотри на картинки!
Тут сразу несколько важных вещей:
• Изменяемые типы данных передаются в функцию по ссылке, а значит функция их может модифицировать!
• Любой глобальный изменяемый объект может измениться во время выполнения программы и с этим нужно быть очень аккуратным!
На собеседовании такого ответа будет боле чем достаточно 😉
Зачем нужно знать про изменяемость объектов в python?
Сразу закономерный вопрос: “зачем вообще все это нужно?” И опытные интервьюеры также могут спросить это у вас 🧐. Мне очень нравится этот вопрос, он показывает, что человек не просто зазубрил правильный ответ про типы данных, а понимает почему это важно ☝️!
Без лишних слов! Этот пример иллюстрирует все очень наглядно. Смотри на картинки!
Тут сразу несколько важных вещей:
• Изменяемые типы данных передаются в функцию по ссылке, а значит функция их может модифицировать!
• Любой глобальный изменяемый объект может измениться во время выполнения программы и с этим нужно быть очень аккуратным!
На собеседовании такого ответа будет боле чем достаточно 😉
❤9👍6😱3🔥2
Python ментор
#interview, #python Зачем нужно знать про изменяемость объектов в python? Сразу закономерный вопрос: “зачем вообще все это нужно?” И опытные интервьюеры также могут спросить это у вас 🧐. Мне очень нравится этот вопрос, он показывает, что человек не просто…
#interview #python
Как понять, тип данных изменяемый или неизменяемый?
Это мой любимый вопрос по этой теме 🤓
Тут важно знать одну вещь: в python существует функция
• Попробуем применить ее на неизменяемом объекте типа
Видите 👀? Адрес объекта поменялся! Это значит, что
• Теперь изменяемый тип данных
Ага! А тут адрес не изменился! Вывод достаточно очевиден: этот тот же самый объект с тем же самым местом в памяти, и изменился сам объект, а не его адрес!
Вот и все, теперь вы полностью готовы к любым вопросам на собеседовании про типы данных в python, удачи 🍀
Как понять, тип данных изменяемый или неизменяемый?
Это мой любимый вопрос по этой теме 🤓
Тут важно знать одну вещь: в python существует функция
id()
, которая возвращает идентификатор объекта в виде целого числа. Это целое число является адресом места хранения объекта в памяти.• Попробуем применить ее на неизменяемом объекте типа
int
:>>> num = 1
>>> id(num)
4367712496
>>> num += 1
>>> id(num)
4367712528
Видите 👀? Адрес объекта поменялся! Это значит, что
num
после прибавления 1 теперь совершенно другой объект, с другим местом в памяти 😮! • Теперь изменяемый тип данных
list
:>>> nums = [1]
>>> id(nums)
4373021952
>>> nums += [1]
>>> id(nums)
4373021952
Ага! А тут адрес не изменился! Вывод достаточно очевиден: этот тот же самый объект с тем же самым местом в памяти, и изменился сам объект, а не его адрес!
Вот и все, теперь вы полностью готовы к любым вопросам на собеседовании про типы данных в python, удачи 🍀
👍8💯7🔥3❤2🤝1
Привет, друзья 👋!
За свою карьеру я прошел больше 20 алгоритмических интервью и выяснил что у интервьюеров есть несколько “любимых” задач, которые встречаются чаще остальных. Их совсем немного, но если вы научитесь их решать, и поймете паттерн их решения, то 90% алгоритмических проблем на интервью покажутся вам на удивление простыми!
Хочу с вами разобрать задачу, которая называется сумма двух, давайте скорее начнем, и алгоритмы из страшного сна превратиться для вас в легкую прогулку!
Условие
Дан массив целых чисел
Пример:
За свою карьеру я прошел больше 20 алгоритмических интервью и выяснил что у интервьюеров есть несколько “любимых” задач, которые встречаются чаще остальных. Их совсем немного, но если вы научитесь их решать, и поймете паттерн их решения, то 90% алгоритмических проблем на интервью покажутся вам на удивление простыми!
Хочу с вами разобрать задачу, которая называется сумма двух, давайте скорее начнем, и алгоритмы из страшного сна превратиться для вас в легкую прогулку!
Условие
Дан массив целых чисел
nums
и число target
Нужно написать функцию, которая бы возвращала индексы двух чисел из nums
дающих в сумме target
. Нельзя использовать одни и те же элементы повторно.Пример:
Ввод: nums = [2,7,11,15], target = 13
Вывод: [0,2]
Объяснение: nums[0] + nums[2] == 13, мы возвращаем [0, 2]
🔥7👍5👀4😱2🙈2❤1
Начнем с решения без “хитрости”
Для начала, первое, что приходит в голову – это перебирать все пары числе из массива
На интервью важно сказать, про сложность этого алгоритма:
• По времени: O(n^2) (о от n-квадрат) - мы запустили 2 цикла один в другом
• По памяти: O(1) (о от единицы) - мы не выделяли никакой дополнительной памяти
Для начала, первое, что приходит в голову – это перебирать все пары числе из массива
nums
пока мы не получим в сумме target
. Попробуйте сделать это сами! На любое упражнение я советую тратить не больше 10 минут, обычно этого времени хватает, чтобы понять, получается решение или нет. А затем посмотрите мое решение 🤓На интервью важно сказать, про сложность этого алгоритма:
• По времени: O(n^2) (о от n-квадрат) - мы запустили 2 цикла один в другом
• По памяти: O(1) (о от единицы) - мы не выделяли никакой дополнительной памяти
👍9❤6🔥3💯3🤩1
Python ментор
Начнем с решения без “хитрости” Для начала, первое, что приходит в голову – это перебирать все пары числе из массива nums пока мы не получим в сумме target. Попробуйте сделать это сами! На любое упражнение я советую тратить не больше 10 минут, обычно этого…
Теперь решения с “хитростью”
Хитрость заключается в том, чтобы сначала создать словарь. В котором, в ключах будут все числа из
Тогда мы сможем быстро найти в этом словаре индекс того числа, которого нам не хватает, чтобы в сумме получить
На интервью важно сказать, про сложность этого алгоритма:
- По времени: O(n) (о от n) - мы запустили 2 цикла, но последовательно, а не 1 в другом, как в предыдущем решении
- По памяти: O(n) (о от n) - мы выделили дополнительную память под словарь
Эту задачу можно решить и за один проход цикла, но я вас уверяю, что любому интервьюеру будет достаточно и этого решения.
Важно запомнить паттерн, когда мы сначала создаем какую-то вспомогательную структуру данных (обычно это словарь), а затем с его помощью решаем задачу 😎
Хитрость заключается в том, чтобы сначала создать словарь. В котором, в ключах будут все числа из
nums
, а в значениях индексы этих чисел в массиве:nums = [2,7,11,15]
d = {2: 0, 7: 1, 11: 2, 15: 3}
Тогда мы сможем быстро найти в этом словаре индекс того числа, которого нам не хватает, чтобы в сумме получить
target
На интервью важно сказать, про сложность этого алгоритма:
- По времени: O(n) (о от n) - мы запустили 2 цикла, но последовательно, а не 1 в другом, как в предыдущем решении
- По памяти: O(n) (о от n) - мы выделили дополнительную память под словарь
Эту задачу можно решить и за один проход цикла, но я вас уверяю, что любому интервьюеру будет достаточно и этого решения.
Важно запомнить паттерн, когда мы сначала создаем какую-то вспомогательную структуру данных (обычно это словарь), а затем с его помощью решаем задачу 😎
🔥12💯5❤3🤝3😱2
#interview, #python, #asyncio, #multiprocessing, #multithreading
Совсем недавно я собеседовал трех джунов и, конечно, спрашивал про асинхронность. Спойлер: никто не смог преодолеть этот вопрос, хотя, ребята толковые, и явно что-то читали. Я понял, что у многих людей нет стройной картины, и возникает много проблем, которые даже не касаются асинхронности напрямую. Вот список проблемных тем:
- разница между потоком и процессом
- что такое io-bound и cpu-boud задачи
- разница между многопоточность и асинхронностью
- Да кто этот ваш GIL? И где он тут?
- Ну и напоследок, что же это за асинхронность такая? С реальными примерами!
Все это мы с вами разберем в ближайшее время, так, чтобы вы поняли, как устроено конкурентное программирование в python. Ну и конечно, все темы я разбираю с позиции человека, который проходит интервью, чтобы вы, смогли извлечь максимум пользы!
Совсем недавно я собеседовал трех джунов и, конечно, спрашивал про асинхронность. Спойлер: никто не смог преодолеть этот вопрос, хотя, ребята толковые, и явно что-то читали. Я понял, что у многих людей нет стройной картины, и возникает много проблем, которые даже не касаются асинхронности напрямую. Вот список проблемных тем:
- разница между потоком и процессом
- что такое io-bound и cpu-boud задачи
- разница между многопоточность и асинхронностью
- Да кто этот ваш GIL? И где он тут?
- Ну и напоследок, что же это за асинхронность такая? С реальными примерами!
Все это мы с вами разберем в ближайшее время, так, чтобы вы поняли, как устроено конкурентное программирование в python. Ну и конечно, все темы я разбираю с позиции человека, который проходит интервью, чтобы вы, смогли извлечь максимум пользы!
❤11👍7🔥5🤩1
Python ментор
#interview, #python, #asyncio, #multiprocessing, #multithreading Совсем недавно я собеседовал трех джунов и, конечно, спрашивал про асинхронность. Спойлер: никто не смог преодолеть этот вопрос, хотя, ребята толковые, и явно что-то читали. Я понял, что у многих…
#interview, #multiprocessing, #multithreading
Про процессы и потоки
Важно: ☝️ Эти понятия — общие и применимые не только к Python. Понятия "процесс" и "поток" в операционных системах почти не отличаются от тех, что используются в Python.
Когда вы запускаете любую программу на своем компьютере, например, Word, создается процесс. Операционная система выделяет ресурсы для этой программы, определяя, сколько оперативной памяти и времени процессора ей нужно. Если вы запустите еще одну программу, например, Zoom, то ваш Word не будет знать об этом, да ему и не надо! У каждого процесса есть свои ресурсы, и у Zoom'а тоже появляются свои.
Здесь важны две вещи. Во-первых, процесс просто представляет собой программу на вашем компьютере (кстати, программа, которую вы написали на Python и запустили, тоже является процессом). Во-вторых, процесс не знает о существовании других процессов рядом с ним и не делит с ними свою область памяти.
Когда мы запускаем процесс Word, внутри него сразу создается поток, который выполняет всю работу. Однако Word — это сложная программа, и внутри нее создается множество потоков. Например, один поток может следить за правописанием, а другой может отправлять ваши личные данные Microsoft 😮️️️️️️. И интересно то, что эти потоки знают о существовании друг друга. Например, поток, отправляющий ваши личные данные, знает от другого, что в школе вы учились не очень и у вас куча орфографических ошибок. Потоки делят между собой одну область памяти, поэтому знают о существовании друг друга!
Обратите внимание на иллюстрацию (личного производства 😎)! Процессы — это большие стрелочки, которые не делятся со своими соседями памятью. А потоки — это маленькие стрелочки внутри процесса, которые выполняют всю работу и могут обмениваться информацией в одной области памяти.
На интервью этих тезисов хватит с головой, да и вообще полезно знать как работает штука, которую вы используете каждый день
Про процессы и потоки
Важно: ☝️ Эти понятия — общие и применимые не только к Python. Понятия "процесс" и "поток" в операционных системах почти не отличаются от тех, что используются в Python.
Когда вы запускаете любую программу на своем компьютере, например, Word, создается процесс. Операционная система выделяет ресурсы для этой программы, определяя, сколько оперативной памяти и времени процессора ей нужно. Если вы запустите еще одну программу, например, Zoom, то ваш Word не будет знать об этом, да ему и не надо! У каждого процесса есть свои ресурсы, и у Zoom'а тоже появляются свои.
Здесь важны две вещи. Во-первых, процесс просто представляет собой программу на вашем компьютере (кстати, программа, которую вы написали на Python и запустили, тоже является процессом). Во-вторых, процесс не знает о существовании других процессов рядом с ним и не делит с ними свою область памяти.
Когда мы запускаем процесс Word, внутри него сразу создается поток, который выполняет всю работу. Однако Word — это сложная программа, и внутри нее создается множество потоков. Например, один поток может следить за правописанием, а другой может отправлять ваши личные данные Microsoft 😮️️️️️️. И интересно то, что эти потоки знают о существовании друг друга. Например, поток, отправляющий ваши личные данные, знает от другого, что в школе вы учились не очень и у вас куча орфографических ошибок. Потоки делят между собой одну область памяти, поэтому знают о существовании друг друга!
Обратите внимание на иллюстрацию (личного производства 😎)! Процессы — это большие стрелочки, которые не делятся со своими соседями памятью. А потоки — это маленькие стрелочки внутри процесса, которые выполняют всю работу и могут обмениваться информацией в одной области памяти.
На интервью этих тезисов хватит с головой, да и вообще полезно знать как работает штука, которую вы используете каждый день
🔥13👍7❤2🤝2😱1😎1
Python ментор
#interview, #multiprocessing, #multithreading Про процессы и потоки Важно: ☝️ Эти понятия — общие и применимые не только к Python. Понятия "процесс" и "поток" в операционных системах почти не отличаются от тех, что используются в Python. Когда вы запускаете…
#interview, #multiprocessing, #multithreading
Поехали дальше! Нужно запомнить вот такой факт: существует 2 типа задач в программировании:
- задачи ввода-вывода: io-bound
- задачи вычисления: cpu-bound
Почему это важно 🤨?
С помощью этой нехитрой информации появляется возможность ускорить ваш код в разы😲! И я, конечно, расскажу потом как это сделать, но сперва теория!
cpu-bound задачи нагружают процессор вашего компьютера, они пыхтят-работают, чтобы что-то посчитать. Ну и логично, если ресурсы вашего компьютера ограниченны, то и запустить таких задач единовременно можно не бесконечное количество.
А вот io-bound задачи ничего не делают… Они просто ждут, пока кто-то другой даст им какую-то информацию. Например, они могут ждать ответа от базы данных, ждать пока что-то скачается из интернета, неважно! просто ждать пока кто-то другой что-то сделает 😴🌴
А вот и все. Для нас важно то, что для ускорения cpu-bound задач в python нам нужно применять многопроцессность, а для io-bound задач - многопоточность (смотрите предыдущий пост). В следующий раз, покажу как это делать на практике 😉
Поехали дальше! Нужно запомнить вот такой факт: существует 2 типа задач в программировании:
- задачи ввода-вывода: io-bound
- задачи вычисления: cpu-bound
Почему это важно 🤨?
С помощью этой нехитрой информации появляется возможность ускорить ваш код в разы😲! И я, конечно, расскажу потом как это сделать, но сперва теория!
cpu-bound задачи нагружают процессор вашего компьютера, они пыхтят-работают, чтобы что-то посчитать. Ну и логично, если ресурсы вашего компьютера ограниченны, то и запустить таких задач единовременно можно не бесконечное количество.
А вот io-bound задачи ничего не делают… Они просто ждут, пока кто-то другой даст им какую-то информацию. Например, они могут ждать ответа от базы данных, ждать пока что-то скачается из интернета, неважно! просто ждать пока кто-то другой что-то сделает 😴🌴
А вот и все. Для нас важно то, что для ускорения cpu-bound задач в python нам нужно применять многопроцессность, а для io-bound задач - многопоточность (смотрите предыдущий пост). В следующий раз, покажу как это делать на практике 😉
👍12🔥7❤2😱2💯1
Python ментор
#interview, #multiprocessing, #multithreading Поехали дальше! Нужно запомнить вот такой факт: существует 2 типа задач в программировании: - задачи ввода-вывода: io-bound - задачи вычисления: cpu-bound Почему это важно 🤨? С помощью этой нехитрой информации…
#interview, #multithreading
Пришло время для примеров, и начнем с того, как применять многопоточность! В Python, для этого обычно используется модуль
Давайте рассмотрим пример, где мы выполняем запросы на веб-сайт (в данном случае, Яндекс).Я назвал эту функцию io_bound, потому что сделать HTTP-запрос является наиболее типичной io-bound задачей. На первой картинке мы выполняем 10 запросов последовательно, а на второй - используем многопоточность!
Время выполнения кода на первой картинке составляет 4 секунды, тогда как на второй - менее секунды 😲! Ваши результаты могут отличаться.
Буквально за две строчки мы получаем увеличение скорости выполнения нашего кода в 4-5 раз. Почему так происходит? Как упомянуто выше, выполнение HTTP-запроса является io-bound задачей, и большую часть времени мы ожидаем ответа от сервера Яндекса. Пока один поток ждет, другой может выполнить еще один запрос и передать управление следующему потоку. Таким образом, код с потоками не ждет ответа сервера, а выполняет запросы, пока есть доступные потоки.
Попробуйте написать такой код сами, поиграйте с параметром
В следующем посте разберем уже работу с несколько процессами❗️
Пришло время для примеров, и начнем с того, как применять многопоточность! В Python, для этого обычно используется модуль
threading
, однако в большинстве случаев более удобным выбором будет использовать concurrent.futures
.Давайте рассмотрим пример, где мы выполняем запросы на веб-сайт (в данном случае, Яндекс).Я назвал эту функцию io_bound, потому что сделать HTTP-запрос является наиболее типичной io-bound задачей. На первой картинке мы выполняем 10 запросов последовательно, а на второй - используем многопоточность!
ThreadPoolExecutor
создает определенное количество потоков (в данном случае 5, что регулируется параметром `max_workers`), выполняет задачи асинхронно в разных потоках и дожидается, пока каждый поток завершит работу.Время выполнения кода на первой картинке составляет 4 секунды, тогда как на второй - менее секунды 😲! Ваши результаты могут отличаться.
Буквально за две строчки мы получаем увеличение скорости выполнения нашего кода в 4-5 раз. Почему так происходит? Как упомянуто выше, выполнение HTTP-запроса является io-bound задачей, и большую часть времени мы ожидаем ответа от сервера Яндекса. Пока один поток ждет, другой может выполнить еще один запрос и передать управление следующему потоку. Таким образом, код с потоками не ждет ответа сервера, а выполняет запросы, пока есть доступные потоки.
Попробуйте написать такой код сами, поиграйте с параметром
max_workers
, сравните время выполнения 🧑💻!В следующем посте разберем уже работу с несколько процессами❗️
👍13💯5🤝4✍1😱1
Python ментор
#interview, #multithreading Пришло время для примеров, и начнем с того, как применять многопоточность! В Python, для этого обычно используется модуль threading, однако в большинстве случаев более удобным выбором будет использовать concurrent.futures. Давайте…
#python, #multiprocessing
За многопроцесность, в python отвечает модуль
Внимание на картинки❗️У нас есть какая-то задача
На первой картинке мы просто выполняем эту функцию 2 раза последовательно.
А на второй картинке пользуемся
В данном случае второй код работает примерно в 2 раза быстрее, проверьте сами! Это происходит потому что потому что задачи выполняются параллельно и независимо друг от друга!
Буду с вами честен, на практике этот модуль удается применить крайне редко, лично я помню только 2 случая за 6 лет, когда я смог таким образом ускорить программу. Но это не значит, что модуль multiprocessing бесполезен! Распространенный пример: запустить какой-то процесс в фоне, чтобы не блокировать сложной cpu-bound задачей ваш код. Я покажу вам супер классный пример использования процессов в питоне, когда мы будем разбирать асинхронность!
За многопроцесность, в python отвечает модуль
multiprocessing
, ничего устанавливать не надо, просто импортируем.Внимание на картинки❗️У нас есть какая-то задача
cpu_bound
, она считает сумму всех чисел от 0 до number и нагружает процессор.Циклы и математические операции - это все cpu-bound задачи. В самом по себе цикле, нет ничего необычного и это не должно стать проблемой для вашего компьютера. Но если в цикле больше 100 миллиона итераций (как в примере) выполнение такой функци может занять существенное время!На первой картинке мы просто выполняем эту функцию 2 раза последовательно.
А на второй картинке пользуемся
multiprocessing.Pool
он, создает несколько процессов (регулируется параметром processes
) и каждый процесс выполняет свою cpu_bound
задачку.В данном случае второй код работает примерно в 2 раза быстрее, проверьте сами! Это происходит потому что потому что задачи выполняются параллельно и независимо друг от друга!
Буду с вами честен, на практике этот модуль удается применить крайне редко, лично я помню только 2 случая за 6 лет, когда я смог таким образом ускорить программу. Но это не значит, что модуль multiprocessing бесполезен! Распространенный пример: запустить какой-то процесс в фоне, чтобы не блокировать сложной cpu-bound задачей ваш код. Я покажу вам супер классный пример использования процессов в питоне, когда мы будем разбирать асинхронность!
👍12💯3🤝3👨💻1
Python ментор
#python, #multiprocessing За многопроцесность, в python отвечает модуль multiprocessing, ничего устанавливать не надо, просто импортируем. Внимание на картинки❗️У нас есть какая-то задача cpu_bound, она считает сумму всех чисел от 0 до number и нагружает…
#multithreading #multiprocessing
Про GIL
Возникает закономерный вопрос, а чего бы не применить потоки ко второй задаче? можете попробовать, ничего не сломается, но работать быстрее не будет 🥲. Почему? Ведь мы запустили также 2 задачи параллельно, почему код не исполняется в 2 раза быстрее?!
Это особенность именно питона, тут не могут работать несколько потоков одновременно! Это происходит потому что в интерпретаторе есть код, который называется GIL(global interpreter lock). Он делает так, чтобы в один момент времени, только один поток мог иметь контроль над интерпретатором.
Вообще, GIL придуман не для того, что портить нам жизнь и не давать использовать потоки во всю их силу. Он помогает нам с вами не думать об освобождении памяти, да и вообще, он даже может ускорять программы, если они работают только в один поток!
Погоди, шеф, а почему же запросы тогда ускорялись 🧐? Мы использовали потоки, чтобы ускорять http-запросы, помните? Дело в том, что в этом случае работает также, только один поток в один момент времени, просто это io-bound задачи, они большую часть времени ждут! И пока один поток ждет, включается другой, делает запрос и также ждет, передавая управление другому и так далее. Поэтому такого рода задачи действительно эффективно решаются с помощью многопоточности.
Про GIL
Возникает закономерный вопрос, а чего бы не применить потоки ко второй задаче? можете попробовать, ничего не сломается, но работать быстрее не будет 🥲. Почему? Ведь мы запустили также 2 задачи параллельно, почему код не исполняется в 2 раза быстрее?!
Это особенность именно питона, тут не могут работать несколько потоков одновременно! Это происходит потому что в интерпретаторе есть код, который называется GIL(global interpreter lock). Он делает так, чтобы в один момент времени, только один поток мог иметь контроль над интерпретатором.
Вообще, GIL придуман не для того, что портить нам жизнь и не давать использовать потоки во всю их силу. Он помогает нам с вами не думать об освобождении памяти, да и вообще, он даже может ускорять программы, если они работают только в один поток!
Погоди, шеф, а почему же запросы тогда ускорялись 🧐? Мы использовали потоки, чтобы ускорять http-запросы, помните? Дело в том, что в этом случае работает также, только один поток в один момент времени, просто это io-bound задачи, они большую часть времени ждут! И пока один поток ждет, включается другой, делает запрос и также ждет, передавая управление другому и так далее. Поэтому такого рода задачи действительно эффективно решаются с помощью многопоточности.
👍14🔥5🤯3💯3😱1🤝1
Я разобрал основные темы, которые вас могут спросить на собесах про потоки/процессы в python. Посты можно читать отдельно, а можно по порядку, там даже прослеживается сюжет 😅
Тут будет небольшое оглавление, для удобства:
1. Потоки и процессы. Что это такое и в чем отличие.
2. Виды задач. io-bound и cpu-bound
3. Как применять многопоточность
4. Как применять многопрцессность
5. Почему в python не работает многопоточность для cpu-bound задач. GIL
Вообще, зарядившись этими знаниями, можно не только ответить на собесе, а еще и начинать понимать асинхронность, о которой будет следующая серия постов.
А пока можете поставить мне класс 👍 за иллюстрации собственного производства 😎 Дальше больше!
Тут будет небольшое оглавление, для удобства:
1. Потоки и процессы. Что это такое и в чем отличие.
2. Виды задач. io-bound и cpu-bound
3. Как применять многопоточность
4. Как применять многопрцессность
5. Почему в python не работает многопоточность для cpu-bound задач. GIL
Вообще, зарядившись этими знаниями, можно не только ответить на собесе, а еще и начинать понимать асинхронность, о которой будет следующая серия постов.
А пока можете поставить мне класс 👍 за иллюстрации собственного производства 😎 Дальше больше!
Telegram
Python ментор
#interview, #multiprocessing, #multithreading
Про процессы и потоки
Важно: ☝️ Эти понятия — общие и применимые не только к Python. Понятия "процесс" и "поток" в операционных системах почти не отличаются от тех, что используются в Python.
Когда вы запускаете…
Про процессы и потоки
Важно: ☝️ Эти понятия — общие и применимые не только к Python. Понятия "процесс" и "поток" в операционных системах почти не отличаются от тех, что используются в Python.
Когда вы запускаете…
👍44🔥4😱4❤2⚡1🤩1🐳1💯1😎1
old.pdf
86.2 KB
Разбор резюме
#resume
Как ментор, я достаточно часто разбираю резюме и хочу показать вам недавний пример
Но перед этим, 2 занимательных факта, которые всегда надо держать в голове при составлении резюме:
- На прочтение одного резюме у эйчара уходит в среднем около 20 секунд. Вывод очевидный: нужно сокращать ваше резюме, чтобы его не выкинули сразу по причине — много букв 😢
- Эйчар, который просматривает и отбирает резюме, в 95% случаев вообще ничего не понимает в программировании. Он ищет в вашем резюме ключевые слова, которые указаны в описании вакансии. Значит эти ключевые слова нужно в резюме засунуть 🤫
Хайлайты того, что мы сделали:
- Вставили фотку — маст-хэв для поиска работы в России
- В описании каждого места работы указали не просто что делали, а какие достижения у нас были
- Постарались сократить резюме до адекватного количества символов
- Замаскировали курс практикума как реальный опыт, который находится под NDA (договор о неразглашении).
- Сократили список ключевых слов до самых частотных
Позже, я поделюсь с вами конверсией по старому и новому резюме, должно быть интересно 🤓
#resume
Как ментор, я достаточно часто разбираю резюме и хочу показать вам недавний пример
Но перед этим, 2 занимательных факта, которые всегда надо держать в голове при составлении резюме:
- На прочтение одного резюме у эйчара уходит в среднем около 20 секунд. Вывод очевидный: нужно сокращать ваше резюме, чтобы его не выкинули сразу по причине — много букв 😢
- Эйчар, который просматривает и отбирает резюме, в 95% случаев вообще ничего не понимает в программировании. Он ищет в вашем резюме ключевые слова, которые указаны в описании вакансии. Значит эти ключевые слова нужно в резюме засунуть 🤫
Хайлайты того, что мы сделали:
- Вставили фотку — маст-хэв для поиска работы в России
- В описании каждого места работы указали не просто что делали, а какие достижения у нас были
- Постарались сократить резюме до адекватного количества символов
- Замаскировали курс практикума как реальный опыт, который находится под NDA (договор о неразглашении).
- Сократили список ключевых слов до самых частотных
Позже, я поделюсь с вами конверсией по старому и новому резюме, должно быть интересно 🤓
🔥16👍8😱3❤1🐳1💯1
Python ментор pinned «Я разобрал основные темы, которые вас могут спросить на собесах про потоки/процессы в python. Посты можно читать отдельно, а можно по порядку, там даже прослеживается сюжет 😅 Тут будет небольшое оглавление, для удобства: 1. Потоки и процессы. Что это такое…»
Ты, наверное, в курсе, что есть куча каналов с задачками по python.
У меня есть кое-что покруче: абсолютно бесплатный бот с задачками по python для дополнительной подготовки к интервью!
Подрубайтесь: t.me/python_problems_bot?start=python_dev_mentor😮
Также, если у тебя есть желание и скилы разработать фичу в боте 💪 - пишите мне @MarksAngeles! Расскажи обязательно чуть-чуть про себя что знаешь-умеешь.
Я познакомлю тебя с тем, как происходит реальная разработка и проведу бескомпромиссное код-ревью!
Требования: нужно знать что такое python и базы данных. Количество мест на такую движуху: 1!😏
У меня есть кое-что покруче: абсолютно бесплатный бот с задачками по python для дополнительной подготовки к интервью!
Подрубайтесь: t.me/python_problems_bot?start=python_dev_mentor
Также, если у тебя есть желание и скилы разработать фичу в боте 💪 - пишите мне @MarksAngeles! Расскажи обязательно чуть-чуть про себя что знаешь-умеешь.
Я познакомлю тебя с тем, как происходит реальная разработка и проведу бескомпромиссное код-ревью!
Требования: нужно знать что такое python и базы данных. Количество мест на такую движуху: 1!
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Python каждый день
Приложение для изучения python 🐍! Зарабатывай достижения и соревнуйся с друзьями!🏆
Автор: https://t.me/python_dev_mentor
Автор: https://t.me/python_dev_mentor
❤13😱4🤩3💯2👍1
Доброе утро 👋
Я решил попробовать публиковать обучающий контент в виде маленьких статей👉
Для начала выбрал несложную тему, но придумал для нее крутое авторское решение
Заходи быстрее читай и пробуй это на практике
👇 👇 👇
https://telegra.ph/Udalenie-povtoryayushchihsya-ehlementov-v-spiske-11-28
👆 👆 👆
Я решил попробовать публиковать обучающий контент в виде маленьких статей
Для начала выбрал несложную тему, но придумал для нее крутое авторское решение
Заходи быстрее читай и пробуй это на практике
https://telegra.ph/Udalenie-povtoryayushchihsya-ehlementov-v-spiske-11-28
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegraph
Удаление повторяющихся элементов в списке:
Очень часто в работе возникает задача получить только уникальные значения из списка, или просто убрать повторяющиеся элементы. Как это сделать, вы, скорее всего, знаете и без меня 🙂! Конечно же использовать множества(set). Множества в силу своего устройства…
🔥32👍12🫡3❤2💯1
Python ментор pinned «Ты, наверное, в курсе, что есть куча каналов с задачками по python. У меня есть кое-что покруче: абсолютно бесплатный бот с задачками по python для дополнительной подготовки к интервью! Подрубайтесь: t.me/python_problems_bot?start=python_dev_mentor 😮 Также…»
Вышло мое первое видео на ютубе!
❗️Кто не видел — посмотрите❗️
Где-то нервничал 🫣 Где-то не сказал то, что нужно было сказать 🤥 А что-то вообще ляпнул лишнее 😅
Но как первая попытка, считаю, достойно 💪! Спасибо Артему за интервью, а Антону за возможность выступить на его канале!
В новом году хочу начать пилить видосы на ютуб, вдруг попрет! Фишкой канала будет: «рассказывать суть, без лишней воды, что реально нужно для собеса/работы»
https://youtu.be/xLHeKI2y-VE?si=T0T7lQO53iUDqAmI
❗️Кто не видел — посмотрите❗️
Где-то нервничал 🫣 Где-то не сказал то, что нужно было сказать 🤥 А что-то вообще ляпнул лишнее 😅
Но как первая попытка, считаю, достойно 💪! Спасибо Артему за интервью, а Антону за возможность выступить на его канале!
В новом году хочу начать пилить видосы на ютуб, вдруг попрет! Фишкой канала будет: «рассказывать суть, без лишней воды, что реально нужно для собеса/работы»
https://youtu.be/xLHeKI2y-VE?si=T0T7lQO53iUDqAmI
🔥40❤5🎉3👍2😱2👏1