Друзья, к сожалению предновогодняя пора - это время залатать дыры и отрелизить все , что можно, времени нет совсем. Но надеюсь до Нового года еще одно видео сниму. Не забывайте подписаться на канал и всем удачи.
ребят, я не удаляю никаких коментариев, кроме совсем уже отмороженных, если ваш коммент удален, то вы или код какой то там прицепили или ссылку или мат там есть, Ютуб удаляет сам. Просто вижу в почте мне пишут, что я мол удаляю комменты, это не я =)
Для таких тем нужно не запись в 50 минут, а вебинар на 8 часов) с тестами, с ООП, с архитектурой. с использованием различный паттернов. Можно реальную лекцию подготовить) Так же конечно можно рассказать что бывают и RLock и что все это может работать с контекстным менеджером) А еще бывают семафоры, барьеры и куча всего бескрайнего) Провести аналогии с multiprocessinig, то как одни могут порождать других. И все это весьма интересно и Автор конечно прав, это вершина айсберга и нужно глубоко самому погружаться в вопрос. На русском языке в сети скудно с данной инфой, к сожалению.
Хороший выпуск. Пул потоков тоже создает потоки, там все те же низкоуровневые обращения к ОС, просто они могут быть переиспользованы (вызывать задачу несколько раз с разными наборами аргументов). В остальном - замечательное видео.
17:12 Главный поток завершился, но не умер. Главный поток будет ждать завершения всех недемоничесих потоков. def background_task(mainthread): print("Фоновый поток начал работу") time.sleep(2) print(f"Основной поток жив? {mainthread.is_alive()}") # False active_threads = [thread.name for thread in threading.enumerate()] # ['MainThread', 'Thread-1 (background_task)'] print(active_threads) print("Фоновый поток завершил работу") Передайте основной поток в функцию и убедитесь, что он присутствует в списке активных потоков! ) Дело в том, что этот поток особенный, даже если у нег is_alive()=False - он остается в списке активных потоков до завершения программы.
Здравствуйте! Ваш канал - жемчужина из себе подобных. Благодарю за подробное объяснение. Я начинающий в этой сфере и пытаюсь своими силами изучить Питон в свободное от работы время. Могли бы записать видео о фреймворках? Например Джанго. Спасибо.
Супер интересная тема. Когда изучал, случился очередной инсайд. Автор говорит что это сложная тема, даже для олдов. Но на удивление, сейчас это требуются даже от джунов, но это не означает что это просто))
@@PythonRussian вот что спрашиваем мы и спрашивают другие по этой теме: системные вызовы, GIL, виды операций, концепция асинхронного программирования. потоки/процессы с точки зрения различий, межпроцессное взаимодействие, сигналы, прерывания, планировщик ОС. Это минимум, если человек плавает и не знает этих основ, то пока.
Вопрос про использование демонических потоков с join(). Разве это не полный аналог запуска недемонического потока? Ожидание продлится до завершения потока в обоих случаях. В чем профит? Ведь если есть join() потока, то его никто прибивать до его завершения не будет?
24:13 Когда происходит одновременный старт 10_000 потоков, то подозреваю, что выполнение CPU-bound вычислительной задачи происходит по любому последовательно, действие за действием. Еще есть подозрение, что система не создает одновременно 10_000 активных потоков, ведь ранее, было сказано, что это число ограничено?
Спасибо за видео! могу ли я для n потоков сделать n функций так что бы каждая функция имела один и тот же функционал, но имела бы другие переменные и следовательно не возникала гонка потоков?
да, можно, например можно разделить задачу на мелкие подзадачи, их раздать потокам, а результатом работы пусть будет некий объект, у каждого потока свой. В финале ты у всех потоков результаты собираешь в одно место и там уже делаешь свой финальный результат. Так как потоки не конкурируют ни за задачу, ни за результат(у каждого свой) то не нужно никаких локов и синхронизаций, не будет никаких проблем.
27:54 То что вы рассматриваете, это не состояние гонки, а ситуация с устареванием данных. Введение задержки просто приводит к потере актуальности данных. Потоки не конкурируют за ресурс, они просто оперируют устаревшими данными. Хотите гонки? Пишите данные из разных потоков в один файл!). И думать, что скорость переключения потоков - это постоянные пять миллисекунд - заблуждение!) Поставьте в свой скрипт задержку в 0.001 секунды (в пять раз меньше) все равно получите искаженные данные.
Неуправляемость потока так-же подразумевает тот факт что мы извне не можем управлять работой потока, кроме запуска. Приостановить выполнение потока или продолжить, это всё только изнутри.
Сэр, мне нужно мнение эксперта, и ваши навыки не вызывают сомнений. Как вы относитесь к накрутки опыта в разработке? Если другие варианты? У меня сейчас 2 резюме и единственное, что в них различается, это количество опыта, но на одном 2 отлика (о опыта), а на другом 26 (1.6 опыта).
а как вы отнесетесь, если вам продадут машину со скрученным счетчиком? Нехорошо это, я против, это же обман, причем такой, который вскроется. У меня много знакомых в рекрутинге и они мне каких только историй не рассказывали, включая и прохождение собеса одним человеком, а на работу пришел другой. Не надо так, сделай крутой пет-проект, добавь его в резюме, не откликайся на все подряд, добавься в линке к тысяче ХР - вот это поможет. и не переставай учиться
@@PythonRussian Спасибо за ответ. Насчёт машины пример неподходящий, у меня нет прав. Проблема в том, что у меня есть pet-проекты: начиная от простенького: 'сервиса бранирования', Чат-бота по спортивной тиматики( который 'крадёт' идеи у некоторых блогеров, всё в открытом доступе), заканчивая своей библиотекой для NLP ( кое-что позаимствовал у Chainer). И при этом у меня Experts(это ранг) на Kaggle, да это не мастер(это в процесе), но всё же. Я даже не знаю, что ещё сделать:) Не очень кайфово, когда проходишь интвью во 'фейку', а по реальному тупо не зовут. И я получил 8( из 11), но отклоняю. Не хочу врать, но у меня уже стадия принятия:) "мне рассказывали, включая и прохождение собеса одним человеком, а на работу пришел другой" - Кошмар! Учится нужно всегда - это база! Извените за обилие текса. Спасибо!
потоки, процессы сложные если разбираться без практики. На степике есть курсы по этой теме с практикой. Не скиллбокс и ЯП за стопицот денег а адекватные.
Друзья, к сожалению предновогодняя пора - это время залатать дыры и отрелизить все , что можно, времени нет совсем. Но надеюсь до Нового года еще одно видео сниму. Не забывайте подписаться на канал и всем удачи.
Удачи и Вам. Огромная благодарность, что находите время для создания новых роликов.
ребят, я не удаляю никаких коментариев, кроме совсем уже отмороженных, если ваш коммент удален, то вы или код какой то там прицепили или ссылку или мат там есть, Ютуб удаляет сам. Просто вижу в почте мне пишут, что я мол удаляю комменты, это не я =)
Спасибо за проделанную работу!
Для таких тем нужно не запись в 50 минут, а вебинар на 8 часов) с тестами, с ООП, с архитектурой. с использованием различный паттернов. Можно реальную лекцию подготовить) Так же конечно можно рассказать что бывают и RLock и что все это может работать с контекстным менеджером) А еще бывают семафоры, барьеры и куча всего бескрайнего) Провести аналогии с multiprocessinig, то как одни могут порождать других. И все это весьма интересно и Автор конечно прав, это вершина айсберга и нужно глубоко самому погружаться в вопрос. На русском языке в сети скудно с данной инфой, к сожалению.
дофига, вы просто плохо искали
Хороший выпуск. Пул потоков тоже создает потоки, там все те же низкоуровневые обращения к ОС, просто они могут быть переиспользованы (вызывать задачу несколько раз с разными наборами аргументов). В остальном - замечательное видео.
17:12 Главный поток завершился, но не умер. Главный поток будет ждать завершения всех недемоничесих потоков.
def background_task(mainthread):
print("Фоновый поток начал работу")
time.sleep(2)
print(f"Основной поток жив? {mainthread.is_alive()}") # False
active_threads = [thread.name for thread in threading.enumerate()] # ['MainThread', 'Thread-1 (background_task)']
print(active_threads)
print("Фоновый поток завершил работу")
Передайте основной поток в функцию и убедитесь, что он присутствует в списке активных потоков! ) Дело в том, что этот поток особенный, даже если у нег is_alive()=False - он остается в списке активных потоков до завершения программы.
Здравствуйте! Ваш канал - жемчужина из себе подобных. Благодарю за подробное объяснение. Я начинающий в этой сфере и пытаюсь своими силами изучить Питон в свободное от работы время. Могли бы записать видео о фреймворках? Например Джанго. Спасибо.
В вашем объяснении все начинает играть другими красками)
Спасибо! Отличное видео!
Супер интересная тема. Когда изучал, случился очередной инсайд. Автор говорит что это сложная тема, даже для олдов. Но на удивление, сейчас это требуются даже от джунов, но это не означает что это просто))
асинхронку, потоки спрашивают похоже вообще все теперь. Даже если в вакансии про это не слова.
от джунов требуют скорее какого то представления об этом, как минимум про ГИЛ всегда спрашивают.
@@PythonRussian вот что спрашиваем мы и спрашивают другие по этой теме: системные вызовы, GIL, виды операций, концепция асинхронного программирования. потоки/процессы с точки зрения различий, межпроцессное взаимодействие, сигналы, прерывания, планировщик ОС. Это минимум, если человек плавает и не знает этих основ, то пока.
Спасибо большое за видео)
Спасибо за видео! Очень полезно
Вопрос про использование демонических потоков с join(). Разве это не полный аналог запуска недемонического потока? Ожидание продлится до завершения потока в обоих случаях. В чем профит? Ведь если есть join() потока, то его никто прибивать до его завершения не будет?
24:13 Когда происходит одновременный старт 10_000 потоков, то подозреваю, что выполнение CPU-bound вычислительной задачи происходит по любому последовательно, действие за действием. Еще есть подозрение, что система не создает одновременно 10_000 активных потоков, ведь ранее, было сказано, что это число ограничено?
что можешь сказать про либу gevent? она вроде бы убирает gil
ничего не скажу, когда то давно слышал, до прихода асинкио про гевент и торнадо, с тех пор не на слуху, надо разбираться что она и как делает.
Спасибо за видео!
могу ли я для n потоков сделать n функций так что бы каждая функция имела один и тот же функционал, но имела бы другие переменные и следовательно не возникала гонка потоков?
да, можно, например можно разделить задачу на мелкие подзадачи, их раздать потокам, а результатом работы пусть будет некий объект, у каждого потока свой. В финале ты у всех потоков результаты собираешь в одно место и там уже делаешь свой финальный результат. Так как потоки не конкурируют ни за задачу, ни за результат(у каждого свой) то не нужно никаких локов и синхронизаций, не будет никаких проблем.
@PythonRussian Очень вам спасибо!
Привет, можешь рассказать что нужно знать, чтобы писать веб и стать джуном на питоне
тут разговор на целое видео, постараюсь запланировать на весну =)
Кто то подскажет, в каком видео был разбор схемки на 4:21
"паралельность и конкурентность"
Коммент в поддержку🎉
27:54 То что вы рассматриваете, это не состояние гонки, а ситуация с устареванием данных. Введение задержки просто приводит к потере актуальности данных. Потоки не конкурируют за ресурс, они просто оперируют устаревшими данными. Хотите гонки? Пишите данные из разных потоков в один файл!). И думать, что скорость переключения потоков - это постоянные пять миллисекунд - заблуждение!) Поставьте в свой скрипт задержку в 0.001 секунды (в пять раз меньше) все равно получите искаженные данные.
пасиба за объяснение, тоже этот момент смутил
Спасибо ;)
Неуправляемость потока так-же подразумевает тот факт что мы извне не можем управлять работой потока, кроме запуска. Приостановить выполнение потока или продолжить, это всё только изнутри.
Сэр, мне нужно мнение эксперта, и ваши навыки не вызывают сомнений.
Как вы относитесь к накрутки опыта в разработке?
Если другие варианты?
У меня сейчас 2 резюме и единственное, что в них различается, это количество опыта, но на одном 2 отлика (о опыта), а на другом 26 (1.6 опыта).
а как вы отнесетесь, если вам продадут машину со скрученным счетчиком? Нехорошо это, я против, это же обман, причем такой, который вскроется. У меня много знакомых в рекрутинге и они мне каких только историй не рассказывали, включая и прохождение собеса одним человеком, а на работу пришел другой. Не надо так, сделай крутой пет-проект, добавь его в резюме, не откликайся на все подряд, добавься в линке к тысяче ХР - вот это поможет. и не переставай учиться
@@PythonRussian Спасибо за ответ. Насчёт машины пример неподходящий, у меня нет прав.
Проблема в том, что у меня есть pet-проекты: начиная от простенького: 'сервиса бранирования', Чат-бота по спортивной тиматики( который 'крадёт' идеи у некоторых блогеров, всё в открытом доступе), заканчивая своей библиотекой для NLP ( кое-что позаимствовал у Chainer). И при этом у меня Experts(это ранг) на Kaggle, да это не мастер(это в процесе), но всё же. Я даже не знаю, что ещё сделать:)
Не очень кайфово, когда проходишь интвью во 'фейку', а по реальному тупо не зовут. И я получил 8( из 11), но отклоняю. Не хочу врать, но у меня уже стадия принятия:)
"мне рассказывали, включая и прохождение собеса одним человеком, а на работу пришел другой"
- Кошмар!
Учится нужно всегда - это база!
Извените за обилие текса. Спасибо!
кеггл не уверен что кому то нужен вообще, пет-проект нужен хороший и один, посмотри у меня стрим по этому поводу был
@@PythonRussian спасибо!
Круто
потоки, процессы сложные если разбираться без практики. На степике есть курсы по этой теме с практикой. Не скиллбокс и ЯП за стопицот денег а адекватные.
Top content!!!
CFBR
В python потоки лучше всего умеют это спать