Основы асинхронности в Python #7: Asyncio, async/await

  Рет қаралды 106,130

Oleg Molchanov

Oleg Molchanov

5 жыл бұрын

Мои курсы:
Boosty:
boosty.to/omolchanov/posts/99...
Patreon:
/ karty-vsekh-41011404
Разбор синтаксиса async/await, немного о декораторе @asyncio.coroutine и о "создании" событийного цикла с помощью модуля asyncio.
На двух примерах:
1. Простая демонстрация работы асинхронной программы с помощью синтаксиса Python 3.4 (декоратор @asyncio.coroutine и yield from), затем переход на синтаксис Python 3.5 с использованием async/await.
2. Второй пример - скачивание 10 файлов. Первый вариант полностью синхронный, второй вариант - асинхронный с помощью asyncio, async/await и библиотеки aiohttp.
Для второго примера придется установить aiohttp:
pip install aiohttp
(или pip3 install aiohttp)
** ИСХОДНЫЙ КОД **
Основных проектов доступен в Patreon:
/ iskhodnyi-kod-26640469
***
🔷 Для донатов. Всегда очень признателен за это:
www.donationalerts.ru/r/omolc...
Весь плейлист:
Основы асинхронности в Python #1: Введение
• Основы асинхронности в...
Основы асинхронности в Python #2: Асинхронность с простыми функциями. Событийный цикл.
• Основы асинхронности в...
Основы асинхронности в Python #3: Асинхронность на колбэках.
• Основы асинхронности в...
Основы асинхронности в Python #4: Генераторы и событийный цикл Round Robin
• Основы асинхронности в...
Основы асинхронности в Python #5: Асинхронность на генераторах
• Основы асинхронности в...
Основы асинхронности в Python #6: Корутины и yield from
• Основы асинхронности в...
Основы асинхронности в Python #7: Asyncio, async/await
• Основы асинхронности в...

Пікірлер: 246
@vlad_gnom
@vlad_gnom 5 күн бұрын
Спасибо Олегу за прекрасный курс, многое приоткрылось из под ширмы. Приколько знать, как все это работает с минимальным уровнем абстракций. Автору выражаю большую благодарность за потраченное время.❤️
@at1set590
@at1set590 3 күн бұрын
Воу, какая поставленная речь, какой прекрасный гайд и не так, как другие рассказывают ни то ни сё, воду разливают, просто прекрасно. Видно, что у автора огромный опыт за плечами, однозначно лайк👍
@artemchege
@artemchege 2 жыл бұрын
Страдал также как и вы в попытке перестроить свой мозг и привычку думать синхронно и вот что помогло именно мне: открываете пайчарм, пишите асинхронные примеры Олега или выдумываете свои, создаёте точку входа main и прям там сразу ставите дебаггер в паузу. А после неспешна и по шагам смотрите как, что и в какой последовательности выполняется. И сразу резко все становится понятно, а работа async/await прозрачна. Await это лишь точки в которых event loop бросает выполнение скрипта на некоторое время и бежит обслуживать следующий скрипт в очереди. И все. Как только второй скрипт спотыкается об await, event loop бежит обслуживать первого, если тот готов. И так до конца.
@igorkulibaba7287
@igorkulibaba7287 5 жыл бұрын
Как же классно Олег объясняешь! От души доначу знаю что помощь твоя не оценима. Спасибо
@peskovdev
@peskovdev 2 жыл бұрын
Не досчитался 2ух уроков: 1) Реализовать часть функционала asyncio по превращению функции в корутину 2) Дописать сервер с сокетами с async/await Но в целом серия уроков дала ОООООООЧЕНЬ сильный старт в асинхронности, думаю до этих пунктов дойду самостоятельно. Автору огромное спасибо! Даже в 22 году инфа актуальна)
@Biongar
@Biongar Жыл бұрын
Да, я тоже заметил что сервер с async/await так и не написан, а жаль, пример был бы очень хороший
@it_is_muchomor
@it_is_muchomor Жыл бұрын
На win10 столкнулся с двумя ошибками(скорее особенностями). 1. Программа заканчивается с ошибкой event loop is closed. Лечится установкой параметра asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()), перед вызовом asyncio.run(main(2)) 2. Сохраняется всего 1-2 файла. Проблема в особенности получения времени в Windows. Файлы, тупо, называются одним именем и перезаписывают друг друга. Лечится иным способом именования. По поводу курса - ОГОНЬ!!! Олег объясняет как боженька) Жаль пропал человек(((
@trankov
@trankov 3 жыл бұрын
Господи, как же обалденно. Хочу, чтобы все учебники по Питону были такими.
@makesomepeace
@makesomepeace 3 ай бұрын
Олег, курс огонь, спасибо огрменное! Тем кто досмотрел до этого видео и ничего не понял сходу (как я при первом подходе): - Начать смотреть цикл видео с самого начала - Если повторять за видео,а ещё лучше - ставить на паузу и пытаться самому написать код, а потом смотреть дальше, то всё становится понятно. Я прям почувствовал, как преисполнился в познании, после того как понял механизм работы yield from (await) =) - На предыдущих видео дебажить код по строкам тоже очень полезно, особенно, если вы какие-то свои дополнительные примеры придумываете (ответить клиенту что-нибудь сразу после accept-а, например) - Если сложно - не сдавайтесь! Понимание придёт со временем =) P.S. Cправедливости ради, request на сессиях тоже работает быстрее, чем обычный get (примерно в два раза), но медленнее чем асинхронный код)
@aidarfachrutdinov
@aidarfachrutdinov 5 жыл бұрын
Спасибо за уроки. Ждем следующих. Очень познавательно.
@ikrugloff
@ikrugloff 5 жыл бұрын
Олег, спасибо большое за серию этих видео.
@user-jg3bb6mu2g
@user-jg3bb6mu2g 5 жыл бұрын
Большое спасибо за эту отличную серию видеоуроков!
@leomysky
@leomysky 2 жыл бұрын
Это просто что-то невероятное Спасибо, Олег!
@figaro2440
@figaro2440 5 жыл бұрын
Спасибо. Олег Молчанов это лучшее что есть по питону в русском ютубе.
@user-bf4ym7ss9j
@user-bf4ym7ss9j 5 жыл бұрын
Огромное спасибо за данное видео, очень много материала в интернете с неприменимыми к жизни примерами, благодаря вам наконец смог использовать asyncio
@Michael201078
@Michael201078 3 жыл бұрын
Спасибо. Очень хорошо объясняете. Приятно учиться и все понятно!
@Bobronium
@Bobronium 5 жыл бұрын
Потрясающая серия роликов, спасибо!
@user-fu4pr5kx4u
@user-fu4pr5kx4u 2 жыл бұрын
Отличные, замечательные уроки. Олег, спасибо за ваш труд. Очень полезный контент.
@viktorshuryha3778
@viktorshuryha3778 5 жыл бұрын
Жду 8 и 9 часть. Спасибо за видео!
@benyomin94
@benyomin94 5 жыл бұрын
Олег, спасибо за еще одну прекрасную серию! В будущем интересно было бы послушать вас про функциональное программирование на python
@rlxinc.6016
@rlxinc.6016 Жыл бұрын
Большое спасибо за курс!
@artur.tokranov
@artur.tokranov Жыл бұрын
Отличные уроки! Спасибо большое!
@do_not_put_login_in_alias
@do_not_put_login_in_alias 2 жыл бұрын
Отличный цикл видео. Спасибо огромное. Сначала на одном дыхании посмотрел всю серию, потом вернулся и на всех лайки поставил :)
@vladimirpa177
@vladimirpa177 3 жыл бұрын
Огромное спасибо. Появилось понимание async
@TonyFlexPromo
@TonyFlexPromo 4 жыл бұрын
Большое спасибо за туториалы!
@user-bf2iw8id4v
@user-bf2iw8id4v 5 жыл бұрын
большое спасибо за серию видео. очень позновательно
@TheMurodilla
@TheMurodilla Ай бұрын
Огромное спасибо вам, за ценный урок!
@coffeecoder7368
@coffeecoder7368 5 жыл бұрын
как всегда. Хорошая работа, Олег
@yodapunishes
@yodapunishes 4 жыл бұрын
Потрясающе! Олег, было бы ещё очень интересно послушать от Вас про многопоточность / мультипроцессность / асинхронность, в плане где и что уместно применять. Наверняка у каждой схемы есть какие-то свои побочки на память, загрузку ЦП и т.д.
@54SperMan
@54SperMan 2 жыл бұрын
Олег, огромное вам спасибо. Как только устроюсь - обязательно с первой зп скину донат! Очень крутые уроки!
@YouCanKeepSilence
@YouCanKeepSilence 5 жыл бұрын
Автору огромный респект)
@suzuyah
@suzuyah 4 жыл бұрын
спустя 2 года наткнулся на этот плейлист и теперь благодаря нему разобрался во всём концепте async / await, что они из себя представляют и что такое event loop, день прошёл не зря
@nonpiramid
@nonpiramid 3 жыл бұрын
Одно из полезнейших видео, просмотренных мной в жизни
@sergeyshevtsov5125
@sergeyshevtsov5125 4 жыл бұрын
Спустя год вернулся к этому циклу видосов. В первый раз не осознал, слишком поверхностное было понимание. Сейчас смотрел, осознавал, имплементировал все примеры самостоятельно. И вот теперь пришло понимание. Спасибо, Олег. Как всегда очень ценный контент. Надеюсь, что будешь потихоньку продолжать раскрывать непростые и нужные темы.
@user-gd4lt7ox2m
@user-gd4lt7ox2m 2 жыл бұрын
Большое спасибо. Самое лучшее объяснение асинхронности Python которое я увидел. Особенно понравилось, что объяснение началось с азов. Больше узнал и понял про функции генераторы. Последние примеры тоже огонь! С удовольствием задоначу.
@pushkars9600
@pushkars9600 2 жыл бұрын
Ты просто лучший, спасибо ОГРОМНОЕ!
@user-ee1lx1pe7n
@user-ee1lx1pe7n 2 жыл бұрын
Невозможно поверить, что может существовать настолько качественный контент)))
@antistress_pro
@antistress_pro Жыл бұрын
Очень, очень доходчиво. Спасибо, Олег Молчанов. Не знаю, занимаетесь ли преподаванием сейчас, но Вы, сделали очень большое и полезное дело. На мой взгляд - лучшая подача материала, которую я встречал.
@richblessbigsmoke9781
@richblessbigsmoke9781 Жыл бұрын
Спасибо за отличный урок
@user-cv1ho1vx4u
@user-cv1ho1vx4u Жыл бұрын
Спасибо большое за видео, отличные!
@sagramor
@sagramor 5 жыл бұрын
Очень годный контент, спасибо за него. Продолжай в том же духе! Донаты будут!)
@ggkamv6937
@ggkamv6937 4 жыл бұрын
спасибо огромное этому человеку!
@imgnl
@imgnl 5 жыл бұрын
Спасибо, Олег!
@evgenykuznetsov7490
@evgenykuznetsov7490 4 жыл бұрын
Олег, спасибо за полезные знания, задонатил.
@il7712
@il7712 5 жыл бұрын
спасибо, божественно
@andredru4278
@andredru4278 9 ай бұрын
Спасибо. Понравилось. Стало яснее.
@alexseydugin8109
@alexseydugin8109 4 жыл бұрын
В 5 утра записывать видосы по асинхронности :) большой риспект вам
@laticalamonzi2814
@laticalamonzi2814 5 жыл бұрын
честь и хвала. спасибо!
@ShadowStormlq5mwdasd
@ShadowStormlq5mwdasd Жыл бұрын
Спасибо вам Олег
@eq716
@eq716 2 жыл бұрын
Спасибо большое. Не пишу на Python но вьінужден его читать)) Интересньій язьік, спасибо за об'ьяснения
@mishkasensei
@mishkasensei 3 жыл бұрын
Посмотрел все 7 вдосиков, задонатил, теперь буду переваривать инфу, прояснилось многое, но кое-какие вещи надо ещё переварить и понять.
@slonbeskonechen8310
@slonbeskonechen8310 2 жыл бұрын
Класс! Спасибо большое!
@gnompirogov9259
@gnompirogov9259 Жыл бұрын
Спасибо. Тяжело дается :)))))))
@darkmatiz
@darkmatiz 5 жыл бұрын
Олег, кроме вас таких подробных руководств пока не нашел на Ютубе. Да, есть конечно курсы разные и т.д. - это отдельная всё таки вещь, там разбираюсь всё от базовых вещей, а потом разбирают на кейсах. Но ваши разборы в этом формате - очень конкурентные, спасибо. Ну и конечно: приятный голос, правильно объясняете - вам бы лекции вести :)
@zaemiel
@zaemiel 5 жыл бұрын
Спасибо
@FrolovDaniil
@FrolovDaniil 3 жыл бұрын
@Animus Pexus Не осилил?) Нормальный это ассемблер?
@FrolovDaniil
@FrolovDaniil 3 жыл бұрын
@Animus Pexus Чисто из любопытства) Какие всё же языки вы считаете нормальными и почему? В палемику вступать не собираюсь, просто интересно))
@FrolovDaniil
@FrolovDaniil 3 жыл бұрын
@Animus Pexus Дружище, просто шутка, не хотел обидеть))
@acerswift4386
@acerswift4386 3 жыл бұрын
@Animus Pexus Go крутой, да?
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil 2 жыл бұрын
00:00 Описание библиотеки Asyncio 10:32 Пример: асинхронный вывод чисел и счетчика 24:59 Пример: асинхронная скачка картинок из интернета
@user-fs6pc3jd1q
@user-fs6pc3jd1q 3 жыл бұрын
Шикарно
@OlesSmaha
@OlesSmaha Жыл бұрын
Олег, большое Вам спасибо за проделанную работу. На #5 и #6 усвоение информации для меня пошло немного тяжелее, разрыв шаблонов так сказать, но к этому уроку у меня, видимо, "прогрелся кэш", и информацию впитал на ура. :D Жаль, что вы не продемонстрировали возможность работы с файловой системой не прибегая к синхронной функции... Обратил внимание, что на Вашем канале нет новых видео уже 2 года, надеюсь, что у Вас всё хорошо! Очень понравилась ваша внимательность к деталям и в целом подача материала, Вы замечательный педагог. Возможно, в дальнейшем (по необходимости) ознакомлюсь с другими плейлистами с Вашего канала. Всех благ, очень благодарен!
@user-tc2pt7ep7e
@user-tc2pt7ep7e Жыл бұрын
Супер🤟
@guitar_hedonist
@guitar_hedonist 3 жыл бұрын
Настало время начать использовать асинхронный код, но вот провести соплями по реальному примеру некому. Сама суть ясная была еще на вводных курсах, но внятный вариант реализации только твой ) Очень хороший пример на основе aiohttp. Сама либа не сложная (тот же реквест только асинхронный), но вот не зная о ее существовании я бы бился с requests и ничего бы не добился ))) Спасибо тебе большое!
@mikesomebody5404
@mikesomebody5404 5 жыл бұрын
Топовый контент по asyncio в русском ютубе.
@user-jv1sn9zi7e
@user-jv1sn9zi7e 2 жыл бұрын
Огонь!
@MrYoklmn
@MrYoklmn 5 жыл бұрын
Олег, приветствую. Я не по теме видоса. Ты пропал. Это печально) появляйся скорее с новым видео. Если можешь снять видео про Celery или просто рассказать, как удаленно на сервере заставить питоновские скрипты работать по расписанию или по событиям- было бы очень здорово. Я знаю, что ты читаешь комментарии. Надеюсь, прочитаешь и мой. Удачи и спасибо!
@user-ki7kd8vf3t
@user-ki7kd8vf3t 5 жыл бұрын
MrYoklmn где Олег? Что случилось как так
@johnsmith-yk5vz
@johnsmith-yk5vz 5 жыл бұрын
celery было бы хорошим продолжением серии по django и asyncio
@Grixa1809
@Grixa1809 2 ай бұрын
спасибо из 24 года)
@denissavast
@denissavast 2 жыл бұрын
Благодарю!!!!!!!
@vadiculus5892
@vadiculus5892 Жыл бұрын
Спасибо огромное вам! Жаль что это всё что я могу сделать) Не представляю где бы я брал эту инфу. В жизни бы не подумал что асинхронность основана на генераторах
@anovik72
@anovik72 5 жыл бұрын
Спасибо
@deverloperfantom1372
@deverloperfantom1372 5 жыл бұрын
афигено
@Biongar
@Biongar Жыл бұрын
Очень круто, спасибо большое за курс, но где же реализация примера из первого видео на async await?)
@smellyfecaloid6508
@smellyfecaloid6508 Жыл бұрын
спасибо
@dmitryk9440
@dmitryk9440 4 жыл бұрын
Долго не мог понять как все-таки устроена функция await, когда хотел именно использовать синхронные методы (вместо aiohttp), но эта статья окончатель все пояснила: habr.com/ru/post/453348/ P.S. благодаря предыдущим видео разобрался легко в статье.
@kinquelele7277
@kinquelele7277 Жыл бұрын
Классно объясняешь, но не слова про async for, этим можно было бы еще упростить код в последнем примере (допускаю, что в 2018 его могло еще не быть, но вроде все-таки был). Насчет работы с http через сессии все верно, но если в синхронном варианте использовать request.session, то тоже будет прирост скорости, хоть и не большой
@dmitrytsmyh5971
@dmitrytsmyh5971 4 жыл бұрын
Олег, спасибо за видео. Огромная просьба выпустить видео со слушающим сервером aiohttp, внутри которого запросы с ClientSession на другой сервер. Вопрос в двух Event Loop. Одна встроенная в aiohttp.web и другая в asyncio. Зарание благодарю!
@boris.shestov
@boris.shestov 5 жыл бұрын
Спасибо за урок. Подскажите. Если использовать модуль multiprocessing для решения аналогичной задачи, как в конце видео, в примере с картинками? Уместно ли это? И какой результат в скорости был бы? Примерно такой же?
@zaemiel
@zaemiel 5 жыл бұрын
Если процессов будет по количеству ядер процессора, то это даст определенный прирост в скорости. Но в общем и целом для IO-задач (а работа с сетью - это она) используются потоки. Насколько это будет быстрее по сравнению с асинхронным решением - я не знаю. Проверьте.
@savel2work
@savel2work 3 жыл бұрын
Спасибо, превосходное объяснение темы. Наконец-то стало до конца ясно, как именно работает асинхронность в питоне! Олег, а как asyncio превращает обычную функцию в генератор? Чтобы бесконечный цикл внутри не блокировал выполнение? Или вы тут этого добивались как раз с помощью asyncio.sleep, которая превращала нашу функцию в обёртку для генератора из модуля asyncio? А ensure_future (create task) занимается инициализацией генераторов, да? И наконец не могу не спросить: а что если мы await используем вместо конструкции yield from в классическом генераторе (хочу понять: это просто синтаксический сахар или там изменилось поведение)? В общем, ещё раз благодарю за замечательное объяснение.
@user-ou3cf9ov3v
@user-ou3cf9ov3v 5 жыл бұрын
Олег, привет! Круто было бы сделать серию про Docker. Очень востребованная штука, а на русскоязычном ютубе про него вообще ничего полезного. Спасибо за труды!
@kde416
@kde416 5 жыл бұрын
Приветствую, подкажите в каком видео вы рассказывали про SOLID ?
@MrGerka0291
@MrGerka0291 7 ай бұрын
Сотни лайков!!!! ❤❤❤
@m0ntecr1st04
@m0ntecr1st04 4 жыл бұрын
Начинало смотреть 22к людей, закончило - 11к. вывод - либо половина умерла от асинхронки, либо она им просто не зашла)
@user-sv4fu3ik3c
@user-sv4fu3ik3c 4 жыл бұрын
это еще отличный результат, обычно какие-то курсы - первый урок 35к, второй - 20к, десятый - 1.5к)
@amrklp
@amrklp 4 жыл бұрын
Либо кто-то нашел для себя решение и не стал смотреть все остальное.
@user-sv4fu3ik3c
@user-sv4fu3ik3c 4 жыл бұрын
Amarok ты внимательно смотрел курс?
@amrklp
@amrklp 4 жыл бұрын
@@user-sv4fu3ik3c Я канал начал смотреть именно с этого видео, потому как мне надо было разобраться именно с asyncio, посмотрел еще другие видео, не по теме асинхронности. Мне нужно было разобраться в вопросе - я нашел объяснение. А уж всей темой в целом я ознакомлюсь как-нибудь потом.
@amrklp
@amrklp 3 жыл бұрын
@Sensei - Says Да, спасибо, что переживали за меня все это время.
@ntvisigoth
@ntvisigoth 2 жыл бұрын
Огонь! Но если честно я раз 20 откручивал некоторые места. Потому что в некоторых местах слишком быстро говорите, а надо было бы чуть медленнее. Есть места, которые надо прям на подкорку записать и поэтому они обязаны быть проговоренными в очень медленном темпе
@ImPetrucho
@ImPetrucho 5 жыл бұрын
Здравствуйте, спасибо за видео! Расскажите, пожалуйста, что лучше использовать для скорости (например, обработки веб-сокетов) асинхронное программирование или потоки (модуль threading)? Заранее спасиьо
@dmitryk9440
@dmitryk9440 4 жыл бұрын
Хоть и поздно, но отвечу сервер Apache использует многопоточность, а nginx ассинхронные сокеты. Nginx сейчас всех делает по производительности. Так что выбор в этом плане очевиден.
@imortpsixo
@imortpsixo Жыл бұрын
Для тех, у кого зависает асинхронная загрузка. Скорее всего это не баг в коде, а блокировка со стороны сервера. Попробуйте воспользоваться другим котогенератором.
@mooderatorpro
@mooderatorpro 5 жыл бұрын
Если честно, пока сам не начал играться с асинхронность - все объяснения как об стенку горох. Сделал на grequests + asyncio быстрый асинхронный парсер заголовков страниц (в качестве теста). Сравнил с тем же решением на обычных реквестах и многопроцессорности - реально быстрее получается на асинхроне прогрузить пачку страниц. Если кому интересно, могу показать код.
@saitaro
@saitaro 5 жыл бұрын
Интересно, покажите!
@user-io2kp7jm6z
@user-io2kp7jm6z 3 жыл бұрын
Макс привет
@vanya15369
@vanya15369 5 жыл бұрын
Олег, можете посоветовать дополнительные материалы для изучение асинхронного программирования в Python? В т.ч. по asyncio, aiohttp. Спасибо)
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil 2 жыл бұрын
рекомендую видео американских авторов нередко попадаются очень методичные и грамотные яндекс-браузер позволяет смотреть в онлайн переводе озвучке
@Svadebnievideoroliki
@Svadebnievideoroliki 3 жыл бұрын
Олег, ну вы серьезно считерили в своем сравнении синхронной и асинхронной загрузки картинок. Вы получили около 12 сек при синхронной загрузке, и около одной сек при асинхронной. Вот только в первом случае вы не использовали сессию, а во втором использовали! Выглядит все так, как будто производительность увеличилась в 12 раз из-за асинхронности. На самом же деле эксперимент не чистый. Проверил у себя, получил такие цифры: без сохранения сессии на 10 запросов уходит 2-3 сек если запрашивать в рамках одной сессии ~1,5 сек asyncio + session - около 1 сек. А вообще спасибо, вас приятно смотреть, все грамотно, чувствуется хорошее понимание.
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil 2 жыл бұрын
и в чем причина этого?
@Svadebnievideoroliki
@Svadebnievideoroliki 2 жыл бұрын
@@Das.Kleine.Krokodil В том что с использованием Session при направлении запроса к хосту у вас не будет устанавливаться новое соединение, а будет переиспользовано старое. Соответственно экономится время. И по моим замерам на моих примерах получилось, что именно это в первую очередь дало прирост скорости, а уже во вторую асинхронность.
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil 2 жыл бұрын
@@Svadebnievideoroliki спасибо
@alexeysavostin
@alexeysavostin 2 жыл бұрын
Совсем забросили канал! Спасибо за видео. Жаль, что нет новых.
@viktor3512
@viktor3512 4 жыл бұрын
Зачем использовать декоратор, если мы используем yield from который делает функцию корутиной? И почему рядом с asyncio.sleep(1) используем yield from? Заранее спасибо.
@mukhammadrustambayev2051
@mukhammadrustambayev2051 5 жыл бұрын
про aiohttp уроки не планируете
@artdev8703
@artdev8703 4 жыл бұрын
Отличное объяснение а вот с aiofile ```async def write_image_async(data, url): name = os.path.join("./images_async", url.split("/")[-1]) async with AIOFile(name, 'wb') as file: await file.write(data) await file.fsync() ``` получается медленнее чем синхронно писать файлы
@dmitryk9440
@dmitryk9440 4 жыл бұрын
Потому что aiofile использует многопоточность, а я так понял в python это целая проблема, так как она реализуется через прослойку gil, которая призвана упростить работу с потоками. И по факту в каждый момент времени процессор выполняет только один поток. (habr.com/ru/post/149420/). Плюс есть еще проблема с одновременной записью нескольких файлов (можно проверить так поставить на копирование очередью и одновременно нескольких, очередь выиграет, особенно если фалов много). (dmlab.ru/python-aiofiles-vs-aiofile)
@unaibekovbakhyt6517
@unaibekovbakhyt6517 5 жыл бұрын
даю слово, что как устроюсь мидл прогером благодаря тебе - то обязательно озолочу ручку). спасибо большое
@user-yi3ud1ld8c
@user-yi3ud1ld8c 5 жыл бұрын
мне будучи джуном ничего не мешает отспыпать гроши))
@user-yi3ud1ld8c
@user-yi3ud1ld8c 5 жыл бұрын
@Lorem Ipsum всмысле?
@user-yi3ud1ld8c
@user-yi3ud1ld8c 5 жыл бұрын
​@Lorem Ipsum Без развития - никуда. Но многое упирается в сферу рынка в которой ты работаешь. Например, мне приходится создатавать карты и геоинформационные ресурсы, которые требуют знания территориального устройства, знания законов, знания в сфере кадастровой и рыночной оценки и.т.д. Но это везде так, например, друг работает программистом на бирже, как в фильме волк с уолл стрит(только без шлюх и наркотиков) и ему приходится изучать тонкости этой отрасли
@user-yi3ud1ld8c
@user-yi3ud1ld8c 5 жыл бұрын
@Lorem Ipsum и вам
@user-kf4jz1gr7j
@user-kf4jz1gr7j 2 жыл бұрын
И как успехи?
@nordost8
@nordost8 4 жыл бұрын
А синхронная функция write_image() как-то влияет на выполнение асинхронного кода? Она как-то блокирует выполнение тасков?
@ilyastrojnov7627
@ilyastrojnov7627 4 жыл бұрын
Конечно, это блокирующий вызов, переключение контента возможно в местах вызова await, в этот момент event_loop смотрит на исполнение тасков, чтобы перейти к ним. Но если эта синхронная функция быстрая - то и фиг с ней.
@igorcherepanov4765
@igorcherepanov4765 3 жыл бұрын
а что делать если я вынужден использовать функции асинхронных библиотеки в своем событийном цикле, можно референтную ссылку на пример/блог/пояснение
@user-so4lz3si3r
@user-so4lz3si3r 2 жыл бұрын
Классные видео уроки, но новичкам в этом курсе мало чего будет понятно.
@KAKRIK
@KAKRIK 11 ай бұрын
Привет! Ты знаешь, как можно помирить async и Buildozer? Знаю, что ты делал приложение на python, может сталкивался с такой проблемой…
@timurislamov186
@timurislamov186 5 жыл бұрын
Привет. А можно получить твой полный конфиг Atom? От стилей, до пакетов. Было бы удобно загрузить его с какого-нибудь Гитхаба
@zaemiel
@zaemiel 5 жыл бұрын
Зачем? Настройте его под себя - как вам нравится.
@ukrainian333
@ukrainian333 5 жыл бұрын
@@zaemiel так скил вырастет моментально =))) Это как покупка фотоаппарата проф.уровня =)))
@eduardmart1237
@eduardmart1237 4 жыл бұрын
Шикакрные видосы! Даже лучше чем у англоязычных коллег. (индусов не считаем ☻) Также хотел спросить, а есть простой способ и файлы асинхронно записывать? Я ведь понимаю что file.write(data) это блокирующая операция?
@zaemiel
@zaemiel 4 жыл бұрын
В начале этого видео я об этом говорил.
@il7712
@il7712 5 жыл бұрын
народ, подскажите что под капотом данной реализации: функции работают асинхронно в рамках одного процесса в разных потоках? или в разных подпроцессах? Если я хочу распараллелить выполнение однотипных операций, но конечные данные мне нужно собрать в одной точке, скажем в массив, для дальнейшей обработки, как быть в этом случае? Сейчас использую shredMemory и multiprocessing/threading.
@zaemiel
@zaemiel 5 жыл бұрын
для этого нужно посмотреть всю серию. Именно для этого я ее и создал - чтобы показать, что под капотом.
@user-hp1xs6jp4z
@user-hp1xs6jp4z 9 ай бұрын
Некоторые вещи я всё таки не пойму. К примеру почему я должен боятся функции sleep(), если они как говорит автор полностью асинхронны? И это во первых. Во вторых хотелось бы узнать чем будет лучше использовать именно метод построения асинхронной программы из видео, чем метод с библиотекой threading? Метод threading тоже из функции делает что-то подобное или я где-то ошибаюсь? Поясните плиз.
@idnews2
@idnews2 5 жыл бұрын
Олег, спасибо! Очень все понятно. Однако поймал вот такую проблему: aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot connect to host loremflickr.com:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1045)')] ссылается вот на эту строку: async with session.get(url, allow_redirects=True) as response: Можете указать направление, где копать?
@igoreliseev1529
@igoreliseev1529 4 жыл бұрын
копай в направлении подписанного сертификата, очевидно же
@user-it6md7gt8u
@user-it6md7gt8u 5 жыл бұрын
Вопрос, к автору. Видео действительно хорошие. Но почему бы в конце плейлиста не дать ссылку на гит репозиторий?
@johnsmith-yk5vz
@johnsmith-yk5vz 5 жыл бұрын
автор не дает готовый код, (и правильно делает) предполагая, что мы должны все понять и написать своё.
@Thisstheend
@Thisstheend 4 жыл бұрын
дает, но за деньги
@koshakpoc2876
@koshakpoc2876 Жыл бұрын
Можно методы классов делать асинхронными ?
@pospos439
@pospos439 4 жыл бұрын
а нельзя вместо первой блокирующей функции использовать пользовательский ввод? а вторая функция от этого ввода будет менять свое поведение не прекращая своей работы
PINK STEERING STEERING CAR
00:31
Levsob
Рет қаралды 21 МЛН
ИРИНА КАЙРАТОВНА - АЙДАХАР (БЕКА) [MV]
02:51
ГОСТ ENTERTAINMENT
Рет қаралды 2 МЛН
Кәріс өшін алды...| Synyptas 3 | 10 серия
24:51
kak budto
Рет қаралды 1,3 МЛН
бесит старшая сестра!? #роблокс #анимация #мем
00:58
КРУТОЙ ПАПА на
Рет қаралды 1,4 МЛН
Основы Asyncio
53:25
Python Russian
Рет қаралды 11 М.
Next-Level Concurrent Programming In Python With Asyncio
19:19
ArjanCodes
Рет қаралды 165 М.
Логирование: оставь print позади
38:01
Python Russian
Рет қаралды 20 М.
AsyncIO, await, and async - Concurrency in Python
9:12
Socratica
Рет қаралды 76 М.
Ruff в Python: Этот инструмент изменит все
10:21
10 признаков того, что вы новичок в Python
4:59
Асинхронное программирование на примере Python / asyncio
1:21:19
Менеджмент разработки ПО
Рет қаралды 10 М.
PINK STEERING STEERING CAR
00:31
Levsob
Рет қаралды 21 МЛН