└── README.md /README.md: -------------------------------------------------------------------------------- 1 | 2 | # Обучающие материалы по питону (roadmap) 🐍 3 | 4 | 5 | * [Курсы лекций](#courses) 6 | * [Книги онлайн](#books_online) 7 | * [По темам (+ краткий конспект)](#parts) 8 | * [Внутренности питона](#internals) 9 | * [Типы данных. Коллекции](#datatypes) 10 | * [Циклы, условия, операторы](#instructions) 11 | * [Итераторы и генераторы. Сопрограммы](#iterators) 12 | * [Функции. Замыкания. Декораторы. ФП](#functions) 13 | * [ООП. Магические методы. Протокол дескрипторов. Метаклассы. Статические методы и методы класса](#OOP) 14 | * [Возможности стандартной библиотеки](#stdlib) 15 | * [Дебаггинг](#debugging) 16 | * [Обработка исключений. Контекстные менеджеры](#exceptions) 17 | * [Пакеты и модули. Pypi. pip и easy_install. virtualenv](#modules) 18 | * [Многопоточность. GIL. Многопроцессные приложения](#gil) 19 | * [Асинхронное программирование. Event loop. Теория](#async) 20 | * [Асинхронные фреймворки и библиотеки](#async_libs) 21 | * [Работа с памятью](#memory) 22 | * [Вопросы производительности](#performance) 23 | * [Профайлинг](#profiling) 24 | * [Логирование и трейсинг](#logging) 25 | * [Модули на C и ctypes](#clang) 26 | * [Тестирование](#testing) 27 | * [Утилиты для улучшения качества кода](#quality) 28 | * [Воспросы безопасности](#security) 29 | * [WCGI](#wcgi) 30 | * [Работа с СУБД. Драйверы. Популярные ORM](#databases) 31 | * [Работа с данными](#datalibs) 32 | * [Работа с файлами](#files) 33 | * [Сетевое программирование](#network) 34 | * [GUI](#gui) 35 | * [Мониторинг приложений средствами ОС](#os) 36 | * [Нагрузочное тестирование python-приложений](#load_testing) 37 | * [Полезное](#useful) 38 | 39 | 40 | 41 | ## Курсы лекций [^](#index "к оглавлению") 42 | 43 | > Хорошие курсы для начала 44 | 45 | 1. Специализация Программирование на Python от МФТИ и Mail.Ru Group (все курсы хорошие) https://www.coursera.org/specializations/programming-in-python 46 | 2. Академия Яндекса, Школа бэкенд-разработки 2019 на питоне https://www.youtube.com/playlist?list=PLQC2_0cDcSKBHamFYA6ncnc_fYuEQUy0s 47 | 3. Computer Science Center, Программирование на Python, 2021, Преподаватель курса: Иван Бибилов https://www.youtube.com/playlist?list=PLlb7e2G7aSpQmGnhrxlqI4iMXNv4R7khy 48 | 4. Computer Science Center, Программирование на Python, осень 2018, Преподаватель курса: Алексей Александрович Кладов https://www.youtube.com/playlist?list=PLlb7e2G7aSpQhNphPSpcO4daaRPeVstku 49 | 5. Computer Science Center, Python, 2016, Преподаватель курса: Сергей Лебедев https://www.youtube.com/playlist?list=PLlb7e2G7aSpTTNp7HBYzCBByaE1h54ruW 50 | 6. Технострим Mail.Ru Group, Прикладной Python (осень 2018) https://www.youtube.com/playlist?list=PLrCZzMib1e9qM62lMXC90SiFy7-1-kAPJ 51 | 7. Python tricks (Intermediate and Advanced Features) от Дена Бадера https://www.youtube.com/playlist?list=PLP8GkvaIxJP0VAXF3USi9U4JnpxUvQXHx 52 | 8. Intermediate Python Programming Course (freeCodeCamp.org) https://www.youtube.com/watch?v=HGOBQPFzWKo 53 | 9. Курс "Python для сетевых инженеров" Н. Самойленко https://www.youtube.com/playlist?list=PLah0HUih_ZRnJFNdZsWr2pNWgYETauGXo 54 | 10. Небольшие видео по основным темам от Михаила Корнеева https://www.youtube.com/channel/UC2-j4-hV33hboyK1FtukJ9w/videos 55 | 11. Школа бэкенд-разработки 2021 от Яндекса по python https://www.youtube.com/playlist?list=PLQC2_0cDcSKCMKnywAS8eI_EgCcE3yx0r 56 | 57 | 58 | ## Книги онлайн [^](#index "к оглавлению") 59 | 1. Книга Intermediate Python (Obi Ike-Nwosu) онлайн https://leanpub.com/intermediatepython/read 60 | 2. The Hitchhiker’s Guide to Python https://docs.python-guide.org/ 61 | 62 | 63 | ## По темам (+ краткий конспект) [^](#index "к оглавлению") 64 | 65 | 66 | ### Внутренности питона [^](#index "к оглавлению") 67 | 68 | > Разбор кода на токены -> построение AST -> оптимизации -> генерация байткода -> выполнение байткода в виртуальной машине. Стандартный интерпретатор - cpython (написан на языке C https://github.com/python/cpython). Альтернативные - pypy (написан на питоне, с JIT), ironpython (C#) и jython(java) - под специфические задачи, не без проблем и особым спросом не пользуются. 69 | > Для решения проблем и получения ответов на свои вопросы полезно 1) уметь разбирать байткод 2) знать структуру cpython и уметь читать сишный код 70 | 71 | 1. Что внутри у Питона: как работает интерпретатор https://www.youtube.com/watch?v=at30AmjPsy4 72 | 2. Внутреннее устройство интерпретатора CPython https://www.youtube.com/watch?v=O9LeNPiftgk 73 | 3. Внутри виртуальной машины Python. https://habr.com/ru/post/501338/ (ч1), https://habr.com/ru/post/501920/ (ч2) 74 | 4. Your Guide to the CPython Source Code (Real python) https://realpython.com/cpython-source-code-guide/ 75 | 5. Внутреннее устройство интерпретатора CPython (урок от Otus) https://www.youtube.com/watch?v=O9LeNPiftgk 76 | 6. Устройство CPython. Лекция из Академии Яндекса https://www.youtube.com/watch?v=PxIqLgjtQ5Y&list=PLQC2_0cDcSKBHamFYA6ncnc_fYuEQUy0s 77 | 7. Understanding Python Bytecode. Learn about disassembling Python bytecode (Reza Bagheri) https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d 78 | 8. Жизненный цикл кода на Python – модель выполнения CPython (Otus) https://habr.com/ru/company/otus/blog/442252/ 79 | 9. Официальная документация по модулю `dis` и список байткод-инструкций https://docs.python.org/3/library/dis.html#python-bytecode-instructions 80 | 10. HOW to use AST (Kamnee Maran) https://medium.com/@kamneemaran45/python-ast-5789a1b60300 81 | 11. Online python ast explorer https://python-ast-explorer.com/ 82 | 12. Знай и люби свой CPython во имя луны и великой справедливости, Александр Кошкин https://www.youtube.com/watch?v=0_5_zEOo8kg 83 | 13. Интересный разбор написания интерпретатора http://aosabook.org/en/500L/a-python-interpreter-written-in-python.html 84 | 14. Книга Inside The Python Virtual Machine (Obi Ike-Nwosu) онлайн https://leanpub.com/insidethepythonvirtualmachine/read 85 | 15. Cpython Internals - разбор внутренностей cpython со схемами https://github.com/zpoint/CPython-Internals 86 | 16. Статьи автора LinearLeopard: Реализация строкового типа в CPython (https://habr.com/ru/post/480324/), Немного внутренностей словарей в CPython (https://habr.com/ru/post/432996/), Реализация целого типа в CPython (https://habr.com/ru/post/455114/) 87 | 17. Python Developer’s Guide (ресурс про разработку интерпретатора) https://devguide.python.org/ 88 | 18. Stepping Through CPython (Larry Hastings) https://www.youtube.com/watch?v=XGF3Qu4dUqk 89 | 19. Bytecodes and stacks: A look at CPython’s compiler and its execution model (Petr Viktorin) (PyCon CZ 2018) https://www.youtube.com/watch?v=rOU-W_J-zFE 90 | 20. A Deep Dive into Python Stack Frames (Nikhil Marathe) (PyCotham 2018) https://www.youtube.com/watch?v=smiL_aV1SOc 91 | 21. Dominik ‘disconnect3d’ Czarnota - Python internals - how does CPython work? https://www.youtube.com/watch?v=4QJOEeldFUc 92 | 22. CPython internals and the VM https://www.youtube.com/watch?v=cUyMnGeZ_3c 93 | 94 | 95 | ### Типы данных. Коллекции [^](#index "к оглавлению") 96 | > Все в питоне является объектом. Чтобы узнать тип объекта `x`, нужно вызвать `type(x)`, список методов и свойств - `dir(x)`, справку по методу - `help(x.some_method)`. Основные коллекции - list, tuple, dict, set, а также несколько интересных коллекций есть в модуле `collections` 97 | 1. Лекция про коллекции и модуль `collections` от CSC https://www.youtube.com/watch?v=kmdA7zJS9gw, лекция про строки, байты https://www.youtube.com/watch?v=VY95vgOROo8 98 | 2. Basic Data Types in Python (real python) https://realpython.com/python-data-types/ 99 | 3. Dictionaries in Python (real python) https://realpython.com/python-dicts/ 100 | 4. Sets in Python (real python) https://realpython.com/python-sets/ 101 | 5. Lists and Tuples in Python (real python) https://realpython.com/python-lists-tuples/ 102 | 6. Linked Lists in Python: An Introduction (real python) https://realpython.com/linked-lists-python/ 103 | 7. Strings and Character Data in Python (real python) https://realpython.com/python-strings/ 104 | 8. Numbers in Python https://realpython.com/python-numbers/ 105 | 9. Модуль collections из стандартной библиотеки https://habr.com/ru/post/478934/ 106 | 10. The Python heapq Module: Using Heaps and Priority Queues (real python) https://realpython.com/python-heapq-module/ 107 | 11. Python Data Structures: Sets, Frozensets, and Multisets (real python) https://www.youtube.com/watch?v=b-K1ujf8u_k 108 | 12. When to Use a List Comprehension in Python https://realpython.com/list-comprehension-python/ 109 | 13. Null in Python: Understanding Python's NoneType Object https://realpython.com/null-in-python/ 110 | 14. Common Python Data Structures (Guide) https://realpython.com/python-data-structures/ 111 | 15. Робот в лабиринте: обрабатываем в Python очереди с приоритетом (heapq) https://proglib.io/p/robot-v-labirinte-obrabatyvaem-ocheredi-s-prioritetom-v-python-2020-07-07 112 | 16. Очередь для использования в многопоточных приложениях https://docs.python.org/3/library/queue.html 113 | 17. Raymond Hettinger - Dataclasses: The code generator to end all code generators - PyCon 2018 https://www.youtube.com/watch?v=T-TwcmT6Rcw 114 | 115 | 116 | ### Циклы, условия, операторы [^](#index "к оглавлению") 117 | > Поведение объектов с тем или иным оператором определяется реализацией у него соответствующего магического метода. 118 | 1. Operators and Expressions in Python (real python) https://realpython.com/python-operators-expressions/ 119 | 2. Operator and Function Overloading in Custom Python Classes (real python) https://realpython.com/operator-function-overloading/ 120 | 3. Conditional Statements in Python (real python) https://realpython.com/python-conditional-statements/ 121 | 4. Python "while" Loops (Indefinite Iteration) (real python) https://realpython.com/python-while-loop/ 122 | 5. Python "for" Loops (Definite Iteration) (real python) https://realpython.com/python-for-loop/ 123 | 124 | 125 | ### Итераторы и генераторы. Сопрограммы [^](#index "к оглавлению") 126 | 1. Лекция про итераторы, генераторы и корутины от CSC https://www.youtube.com/watch?v=Xxuy1zFCMhc 127 | 2. Корутины для самых маленьких. Иван Гончарук, DAN https://www.youtube.com/watch?v=_obr60qv6rM 128 | 3. Как устроены корутины? / Дмитрий Калугин-Балашов (Exnodes Inc.) https://www.youtube.com/watch?v=vhf5lU1suL0 129 | 4. Itertools in Python 3, By Example https://realpython.com/python-itertools/ 130 | 5. How to Use Generators and yield in Python https://realpython.com/introduction-to-python-generators/ 131 | 6. Как работает yield https://habr.com/ru/post/132554/ 132 | 7. Презентации Д.Бизли по генераторам (http://dabeaz.com/generators/) и сопрограммам (http://dabeaz.com/coroutines/) 133 | 8. Python 101: iterators, generators, coroutines, Mark McDonnell https://www.integralist.co.uk/posts/python-generators/ 134 | 9. What is a Coroutine Anyway? (John Reese, North Bay Python 2019) https://www.youtube.com/watch?v=GSiZkP7cI80 135 | 10. Подробно о корутинах в C++ (сравниваются стековые и бесстековые корутины) https://habr.com/ru/company/piter/blog/491996/ 136 | 11. Александр Кошкин "Знай и люби свой yield. Корутины и генераторы за гранью for loop" https://www.youtube.com/watch?v=-E1V24zZJrs 137 | 138 | 139 | ### Функции. Замыкания. Декораторы. ФП [^](#index "к оглавлению") 140 | > Декоратор - часто используемый шаблон проектирования в питоне, для которого есть даже специальный синтаксический сахар `@deco\nmethod` - то же самое что `method=deco(method)` как мы написали бы на других ЯП. В декораторы можно передавать аргументы. 141 | 1. Лекция по ООП и декораторам от Акадении Яндекса https://youtu.be/Db19qjrMsYI?t=2596 142 | 2. Функциональное программирование и работа с данными (+ декораторы) (урок OTUS) https://www.youtube.com/watch?v=iHT2OlrCBgs 143 | 3. Скринкаст Олега Молчанова по декораторам https://www.youtube.com/watch?v=Ss1M32pp5Ew 144 | 4. Лекции про функции https://www.youtube.com/watch?v=VrShEItN0Jc и декораторы https://www.youtube.com/watch?v=rkjg71GJPvA от CSC 145 | 5. Optional Arguments in Python With `*args` and `**kwargs` https://www.youtube.com/watch?v=WcTXxX3vYgY 146 | 6. How to Use Python Lambda Functions https://realpython.com/python-lambda/ 147 | 7. Python's map(): Processing Iterables Without a Loop https://realpython.com/python-map-function/ 148 | 8. Tutorial: Geir Arne Hjelle - Introduction to Decorators: Power Up Your Python Code (Pycon US) https://www.youtube.com/watch?v=T8CQwGIsrx4 149 | 9. Reuven M. Lerner - Practical decorators - PyCon 2019 https://www.youtube.com/watch?v=MjHpMCIvwsY 150 | 151 | 152 | ### ООП. Магические методы. Протокол дескрипторов. Метаклассы. Статические методы и методы класса [^](#index "к оглавлению") 153 | > Все в питоне является объектом. Питон поддерживает множественное наследование, при этом порядок выбора метода определяется алгоритмом MRO. Соглашение об именовании методов (`_method` - приватный атрибут, `__method` - искажение имени для избежания конфликтов наследников). Магические методы `__method__` - задают поведение объекта с операторами, стандартными функциями, при доступе к атрибутам и т.д. 154 | 1. ООП. Лекция Академии Яндекса https://www.youtube.com/watch?v=Db19qjrMsYI 155 | 2. Руководство по магическим методам в Питоне (перевод статьи Rafe Kettler) https://habr.com/ru/post/186608/ 156 | 3. Магические методы и дескрипторы (урок Otus) https://www.youtube.com/watch?v=6Zd35hSvGio 157 | 4. Руководство к дескрипторам (хабр) https://habr.com/ru/post/122082/ 158 | 5. Дескрипторы (В. Донец) https://www.youtube.com/watch?v=akyVo4BzYZo 159 | 6. Алексей Кузьмин. Жизненный цикл Python-объекта https://www.youtube.com/watch?v=UndKVhoMNg8 160 | 7. Лекция про классы https://www.youtube.com/watch?v=2pttEjdYJuo (ч.1) и https://www.youtube.com/watch?v=czqYT7103Eo (ч.2) 161 | 8. Лекция про метапрограммирование от Технострима https://www.youtube.com/watch?v=bt6kU1kuHWA 162 | 9. Python Descriptors: An Introduction https://realpython.com/python-descriptors/ 163 | 10. Supercharge Your Classes With Python super() https://realpython.com/python-super/ 164 | 11. Inheritance and Composition: A Python OOP Guide https://realpython.com/courses/inheritance-composition-python/ 165 | 12. Цикл статей по ООП с подробным разбором тем https://proproprogs.ru/python_oop 166 | 13. Python Magic (Magic of Python) (урок OTUS) https://www.youtube.com/watch?v=rmIDwxyngWU 167 | 14. Luciano Ramalho - Pythonic Objects: idiomatic OOP in Python - PyCon 2019 https://www.youtube.com/watch?v=mUu_4k6a5-I 168 | 15. The Magic of Python - Darshan Markandaiah (Pyohio 2019) https://www.youtube.com/watch?v=X9poNqBfX4Q 169 | 16. Mariano Anaya - Discovering Descriptors (EuroPython 2017) https://www.youtube.com/watch?v=TAuC086NNmo 170 | 17. Ariel Ortiz - The Perils of Inheritance: Why We Should Prefer Composition - PyCon 2019 https://www.youtube.com/watch?v=YXiaWtc0cgE 171 | 18. Ariel Ortiz - Design Patterns in Python for the Untrained Eye - PyCon 2019 https://www.youtube.com/watch?v=o1FZ_Bd4DSM 172 | 173 | 174 | ### Возможности стандартной библиотеки [^](#index "к оглавлению") 175 | > У питона богатейшая стандартная библиотека. Там есть все, что нужно и даже больше 176 | 1. Официальная документация https://docs.python.org/3/library/ 177 | 2. Python 3 Module of the Week (разбор модулей стандартной библиотеки с примерами) https://pymotw.com/3/ 178 | 179 | 180 | ### Дебаггинг [^](#index "к оглавлению") 181 | > Для питона есть консольный дебаггер - pdb, а также дебаггеры в популярных IDE 182 | 1. Python Debugging With Pdb (Real python) https://realpython.com/python-debugging-pdb/ 183 | 2. Advanced Debugging in PyCharm (JetBrains) https://www.youtube.com/watch?v=k6j1NkVAsuU 184 | 3. Как устроены дебаггеры (доклад Елизаветы Шашковой на pycon) https://www.youtube.com/watch?v=jK3D77b-DXk 185 | 4. Отладка Python (статья от mail.ru с обзором дебаггеров) https://habr.com/ru/company/mailru/blog/205426/ 186 | 5. Time Travel Debugging for Python (с профайлингом) https://pytrace.com/ 187 | 6. Goodbye Print, Hello Debugger! - Nina Zakharenko https://www.youtube.com/watch?v=5AYIe-3cD-s 188 | 7. PySnooper - Never use print for debugging again - Ram Rachum - PyCon Israel 2019 https://www.youtube.com/watch?v=XP5imOJc_TE 189 | 8. Дока по использованию отладчика gdb для python-приложений https://devguide.python.org/gdb/ 190 | 9. Introduction to Debugging with Python (PyOhio, 2017) https://www.youtube.com/watch?v=BixeKmlKOJc 191 | 10. Advanced Python Debugging Techniques Using GDB (PyOhio, 2016) https://www.youtube.com/watch?v=rB9rPdMRxIA 192 | 11. Кирилл Борисов (Яндекс) - Отладка в Python: 2016 edition https://www.youtube.com/watch?v=nHhifqUm_Qg 193 | 194 | 195 | ### Обработка исключений. Контекстные менеджеры [^](#index "к оглавлению") 196 | 1. Python Exceptions: An Introduction https://realpython.com/python-exceptions/ 197 | 2. Understanding the Python Traceback https://realpython.com/python-traceback/ 198 | 3. Python KeyError Exceptions and How to Handle Them https://realpython.com/python-keyerror/ 199 | 4. Devpractice Работа с исключениями https://devpractice.ru/python-lesson-11-work-with-exceptions/ 200 | 5. Григорий Петров: "Работа с ошибками. Как ловить исключения и что потом с ними делать." https://www.youtube.com/watch?v=hzVECcMI8ys 201 | 6. Лекция про работу с исключениями от CSC https://www.youtube.com/watch?v=a6UtrJ4Xh-Y 202 | 7. Python Context Managers and the "with" Statement (`__enter__` & `__exit__`) (real python) https://www.youtube.com/watch?v=iba-I4CrmyA 203 | 8. How to Handle Exceptions in Python: A Detailed Visual Introduction https://www.freecodecamp.org/news/exception-handling-python/ 204 | 9. Всё об исключениях и работе с ними в Python (Диджитализируй!) https://www.youtube.com/watch?v=89wpfOAgrCk 205 | 10. Mario Corchero - Exceptional Exceptions - How to properly raise, handle and create them https://www.youtube.com/watch?v=V2fGAv2R5j8 206 | 11. Python 101: Context Managers, by Mark McDonnell https://www.integralist.co.uk/posts/python-context-managers/ 207 | 208 | 209 | ### Пакеты и модули. Pypi. pip и easy_install. virtualenv [^](#index "к оглавлению") 210 | 1. Ликбез по пакетам и шпаргалка по модулям в Python (Хекслет) https://ru.hexlet.io/blog/posts/likbez-po-paketam-i-shpargalka-po-modulyam-v-python 211 | 2. Python Modules and Packages – An Introduction (real python) https://realpython.com/python-modules-packages/ 212 | 3. How to Publish an Open-Source Python Package to PyPI (real python) https://realpython.com/pypi-publish-python-package/ 213 | 4. Dependencies Handling in Python (Julien Danjou) https://julien.danjou.info/dependencies-handling-in-python-automatic-update/ 214 | 5. Лекция от CSC про модули https://www.youtube.com/watch?v=ISo-L-0xsoI 215 | 6. Installing Python Packages with pip and virtualenv / venv (Real pyrhon screencast) https://www.youtube.com/watch?v=UqkT2Ml9beg 216 | 7. Python import: Advanced Techniques and Tips https://realpython.com/python-import/ 217 | 8. How to Publish an Open-Source Python Package to PyPI https://realpython.com/pypi-publish-python-package/ 218 | 9. Python Virtual Environments: A Primer https://realpython.com/python-virtual-environments-a-primer/ 219 | 10. Как опубликовать свою Python библиотеку на PyPI https://proglib.io/p/kak-opublikovat-svoyu-python-biblioteku-na-pypi-2020-01-28 220 | 11. How import works in Python (PyCon India 2018) https://www.youtube.com/watch?v=-mL5WBMseD4 221 | 12. What happens behind execution of an `import` statement? (Shivashis) [PyCon JP 2020] https://www.youtube.com/watch?v=0far0mS2lY8 222 | 13. Python Management and Project Dependencies, Mark McDonnell https://www.integralist.co.uk/posts/python-management/ 223 | 14. Григорий Петров / Управление зависимостями в Python: история боли https://www.youtube.com/watch?v=fP8oGx6ZA5o 224 | 15. Unpack Python Packages – Deep dive into the wheels of python packaging https://www.youtube.com/watch?v=kO5Es7KKUIY 225 | 226 | 227 | ### Многопоточность. GIL. Многопроцессные приложения [^](#index "к оглавлению") 228 | 1. Многопоточность и GIL. Лекция от Computer Science center https://www.youtube.com/watch?v=nR8WhdcRJwM 229 | 2. What is the Python Global Interpreter Lock (GIL)? https://realpython.com/python-gil/ 230 | 3. An Intro to Threading in Python (real python) https://realpython.com/intro-to-python-threading/ 231 | 4. GIL (урок Otus) https://www.youtube.com/watch?v=hCOmbMRsJ8c 232 | 5. GIL в Python: зачем он нужен и как с этим жить - Доклад Г. Петрова https://www.youtube.com/watch?v=AWX4JnAnjBE 233 | 6. Злата Обуховская, Nvidia «Structured Concurrency. Что не так с асинхронностью в питоне?» https://www.youtube.com/watch?v=NmWzt7VdTgA 234 | 7. GIL: почему это боль и как с ним жить. Иван Меньших, RaRe Technologies https://www.youtube.com/watch?v=GGUIt1o_TNc 235 | 8. Константин Данилов. Многопоточность и синхронная/асинхронная обработка в Python https://www.youtube.com/watch?v=ZTBPpLfemaQ 236 | 9. Как устроен GIL в Python https://habr.com/ru/post/84629/ 237 | 10. Global Interpreter Lock https://ru.wikipedia.org/wiki/Global_Interpreter_Lock 238 | 11. Grok the GIL: How to write fast and thread-safe Python https://opensource.com/article/17/4/grok-gil 239 | 12. Асинхронный Python: различные формы конкурентности https://habr.com/ru/post/421625/ 240 | 13. Слайды доклада Д.Бизли "Understanding the Python GIL" http://www.dabeaz.com/python/UnderstandingGIL.pdf 241 | 14. Модуль `concurrent.futures` https://pymotw.com/3/concurrent.futures/ 242 | 15. Speed Up Your Python Program With Concurrency https://realpython.com/python-concurrency/ 243 | 16. Gevent для практикующего питониста https://vovkd.github.io/gevent-tutorial/ 244 | 17. Потоки и процессы (не смешивать), Станислав Рудаков (+ пример использования gdb) [Minsk Python Meetup] https://www.youtube.com/watch?v=mrXsn3yyuDM 245 | 18. Tutorial: Santiago Basulto - Python Concurrency: from beginner to pro https://www.youtube.com/watch?v=18B1pznaU1o 246 | 19. Thread (and AsyncIO) Concurrency Visualization of JetBrains Pycharm and Idea https://www.jetbrains.com/help/pycharm/thread-concurrency-visualization.html 247 | 20. Python's Infamous GIL by Larry Hastings (для чего нужен GIL) https://www.youtube.com/watch?v=KVKufdTphKs 248 | 21. Concurrency In Python Concepts, Frameworks And Best Practices - Stefan Schwarzer (PyCon DE) https://www.youtube.com/watch?v=Do7JtnPh1Mg 249 | 22. Raymond Hettinger, Keynote on Concurrency, PyBay 2017 https://www.youtube.com/watch?v=9zinZmE3Ogk 250 | 23. Jacek Kolodziej: GIL: What's the hassle and why should I care? (PyCon CZ 2017) https://www.youtube.com/watch?v=ZvWmAIODi-s 251 | 24. Writing robust, readable, and maintainable concurrent programs in Python - PyCon APAC 2018 https://www.youtube.com/watch?v=DJnUctSQSGw 252 | 25. Concurrency vs Parallelism - PyCon APAC 2018 https://www.youtube.com/watch?v=HNjAgkybAdQ 253 | 26. Things I Wish They Told Me About The Multiprocessing Module in Python 3 (Pamela McANulty) (PyCon Cleveland 2019) https://www.youtube.com/watch?v=5dMOYf0b_20 254 | 27. Grok the GIL Write Fast And Thread Safe Python (Jesse Jiryu Davis) PyCon 2017 https://www.youtube.com/watch?v=7SSYhuk5hmc 255 | 28. Убирая ГБИ (GIL) из Питона: Гилектомия (Д. Бизли) pycon 2016, русский перевод https://www.youtube.com/watch?v=48l_HOtAqAI 256 | 29. Действительно ли Python GIL уже мертв? (перевод статьи Anthony Shaw) https://habr.com/ru/company/otus/blog/458694/ 257 | 30. Многопроцессность, многопоточность, асинхронность в Python и не только. Что это и как работает? (Диджитализируй!) https://www.youtube.com/watch?v=JIp14T9bvvc 258 | 31. «Обмен данными между процессами python» Yehor Nazarkin LvivPy#5 https://www.youtube.com/watch?v=IaW-1AoGAKc 259 | 32. Chin Hwee Ong - Speed Up Your Data Processing | PyData Global 2020 https://www.youtube.com/watch?v=E9sv2B3Bb20 260 | 261 | 262 | ### Асинхронное программирование. Event loop. Теория [^](#index "к оглавлению") 263 | 1. Асинхронное программирование в Python (урок OTUS) https://www.youtube.com/watch?v=LROBh6pgEp8 264 | 2. async / await - лекция от Computer Science Center https://www.youtube.com/watch?v=x6JZmBK2I8Y 265 | 3. Асинхронное программирование - Лекция Академии Яндекса https://www.youtube.com/watch?v=AXkOli6BsBY (ч.1), https://www.youtube.com/watch?v=IB4bJqmfjI0 (ч.2), https://www.youtube.com/watch?v=FFUYf8FHDlY (ч.3) 266 | 4. Demystifying Python's Async and Await Keywords от JetBrainsTV https://www.youtube.com/watch?v=F19R_M4Nay4 267 | 5. Алексей Кузьмин, ДомКлик «Асинхронность изнутри» https://www.youtube.com/watch?v=pZkerqks43Y 268 | 6. Доклад Д. Бизли Конкурентность в Питоне с нуля. Вживую. https://www.youtube.com/watch?v=ys8lW8eQaJQ 269 | 7. Аsync и await в production / Сергей Борисов (ДомКлик) https://www.youtube.com/watch?v=pN9A5kD_rK8 270 | 8. Основы асинхронности в Python - Курс лекций Олега Молчанова https://www.youtube.com/watch?v=ZGfv_yRLBiY 271 | 9. Что внутри у питона: откуда быть пошел async (доклад З. Обуховской, также рассказано про генераторы) https://www.youtube.com/watch?v=GX7AUAwpQ4I 272 | 10. Школа программистов HH: Python Async (Р. Чекалов) https://www.youtube.com/watch?v=VWEISe8TXUE 273 | 11. Дмитрий Ходаков, Avito «CPU bound задачи в веб-сервисах на Python» https://www.youtube.com/watch?v=OmBuXb7P9Ak 274 | 11. Аsync и await в production / Сергей Борисов (ДомКлик) https://www.youtube.com/watch?v=pN9A5kD_rK8 275 | 12. Что внутри asyncio. Александр Меренков, Antida software https://www.youtube.com/watch?v=V7iecSKgWLM 276 | 13. Asyncio: understanding async and await in Python https://www.youtube.com/watch?v=a_wWnxH2o0Y 277 | 14. Новый Python: Асинхронное всё, Иван Уваров https://cmc.basealt.ru/new-python.html 278 | 15. Реализация epoll в Linux (цикл статей) https://habr.com/ru/company/ruvds/blog/523946/ 279 | 16. Юрий Селиванов, EdgeDB, Asyncio «Asyncio сегодня и завтра» https://www.youtube.com/watch?v=BhqeJGTji2I 280 | 17. Асинхронное программирование в Python (Кузьмин, ДомКлик) https://www.youtube.com/watch?v=OEFsdk1tqAU 281 | 18. Асинхронщина в Python (Полищук, MoscowPython) https://www.youtube.com/watch?v=lIkA0TDX8tE 282 | 19. Understanding Concurrency in Python! - Annie Cook https://www.youtube.com/watch?v=9g5IZDkwAC0 283 | 20. Miguel Grinberg Asynchronous Python for the Complete Beginner PyCon 2017 https://www.youtube.com/watch?v=iG6fr81xHKA 284 | 21. Combining ayncio and threads in the same application (Marc-Andre Lemburg) [PyCon JP 2020] https://www.youtube.com/watch?v=ci9z1NM6F0Y&t=230s 285 | 22. An introduction to concurrent programming with asyncio, Bruce Merry (PyCon SA 2018) https://www.youtube.com/watch?v=x1RXHcE3oVI 286 | 23. Sanic: Async Python (uvloop) with a familiar flask like feel, (PyCon SA 2018) https://www.youtube.com/watch?v=QtXUwEQS2pg 287 | 24. Thinking Outside the GIL with AsyncIO and Multiprocessing, John Reese (PyCon 2018) https://www.youtube.com/watch?v=0kXaLh8Fz3k 288 | 25. Artisanal Async Adventures(Jonas Obrist) (пишем свой asyncio) (PyCon JP 2018) https://www.youtube.com/watch?v=6doZo6eySCg 289 | 26. Deep Dive into Coroutine, Daehee Kim (PyCon Korea) (разбор байткода корутин. слайды на английском, понять можно) https://www.youtube.com/watch?v=NmSeLspQoAA 290 | 27. Adopting Python Asyncio in Large Scale Project (Instagram) – Jimmy Lai – PyCon Taiwan 2018 https://www.youtube.com/watch?v=ACgMTqX5Ee4 291 | 28. Running Python code in parallel and asynchronously (Michal Wysokinski) (EuroPython 2017) https://www.youtube.com/watch?v=ZKzCx4D5c3g 292 | 29. `asyncio.get_event_loop()` → what is that? (Kamal Marhubi) (Montreal-Python 2015) https://www.youtube.com/watch?v=2DmUvBtSdnI 293 | 30. Guide to Concurrency in Python with Asyncio, Mark McDonnell https://www.integralist.co.uk/posts/python-asyncio/ 294 | 31. Async/await: асинхронные возможности в Python 3+ https://xakep.ru/2017/01/11/python-3-asyncio/ 295 | 32. Лекция: Прикладной Python. Асинхронное программирование, Технострим https://www.youtube.com/watch?v=X9RRJG109a4 (+ семинар https://www.youtube.com/watch?v=h0Dm2TNXoP0) 296 | 33. Python Junior подкаст. Про асинхронность в питоне https://www.youtube.com/watch?v=Q2r76grtNeg 297 | 34. Что внутри asyncio, Александр Меренков https://habr.com/ru/post/453348/ 298 | 35. Асинхронное программирование на практике – Дмитрий Орлов [Школа бекенд-разработки Яндекса] https://www.youtube.com/watch?v=nysVwISk9_c 299 | 36. Python Asyncio: The Complete Guide, Jason Brownlee https://superfastpython.com/python-asyncio/ 300 | 301 | 302 | ### Асинхронные фреймворки и библиотеки [^](#index "к оглавлению") 303 | > Устаревшие (Twisted и Tornado), стандртные (asyncio, aiohttp), сыроватые новинки (sanic, vibora) 304 | 1. Дмитрий Ходаков, Авито «Tornado vs Aiohttp» https://www.youtube.com/watch?v=BbyVHtsIM1M (и статья https://habr.com/ru/company/avito/blog/435532/) 305 | 2. Различные асинхронные библиотеки от создателей `asyncio` https://github.com/aio-libs 306 | 3. Андрей Светлов, Python Core Developer «Aiohttp от автора» https://www.youtube.com/watch?v=5NrnBu1vcKo 307 | 4. Yury Selivanov - Asyncio in Python 3.7 and 3.8 https://www.youtube.com/watch?v=ReXxO_azV-w 308 | 5. Самые быстрые Python веб-фреймворки в 2019 (перевод статьи Maksim Larkin) https://habr.com/ru/post/440282/ 309 | 6. Андрей Светлов: "Подводные камни asyncio" https://www.youtube.com/watch?v=GLN_xo4Awcc 310 | 7. Async IO in Python: A Complete Walkthrough https://realpython.com/async-io-python/ 311 | 8. Asyncio: understanding async and await in Python https://www.youtube.com/watch?v=a_wWnxH2o0Y 312 | 9. uvloop — продвинутая реализация цикла событий для asyncio в Python https://habr.com/ru/post/282972/ 313 | 10. Understanding Tornado fundamentals (объяснение про `@gen.coroutine`) https://bhch.github.io/posts/2017/06/understanding-tornado-fundamentals/ 314 | 11. Я не люблю asyncio – Павел Камаев https://www.youtube.com/watch?v=Fj2t959Q7DA 315 | 12. Lynn Root - Advanced asyncio: Solving Real-world Production Problems - PyCon 2019 https://www.youtube.com/watch?v=bckD_GK80oY 316 | 13. Asyncio in the Wild, Ákos Hochrein (теория + обзор библиотек для asyncio) https://www.youtube.com/watch?v=EX4YsevmZBg 317 | 14. An introduction to concurrent programming with asyncio (Bruce Merry) (PyCon SA 2018) https://www.youtube.com/watch?v=x1RXHcE3oVI 318 | 15. Tornado in Depth [EuroPython 2012] (исторический доклад) https://www.youtube.com/watch?v=4Ztq-Yz1ero 319 | 16. import asyncio: Learn Python's AsyncIO (цикл подробных лекций про asyncio) https://www.youtube.com/watch?v=Xbl7XjFYsN4&list=PLhNSoGM2ik6SIkVGXWBwerucXjgP1rHmB 320 | 17. Екатерина Сударева - Асинхронность в Python. Начало https://www.youtube.com/watch?v=OmDKVuROsUM 321 | 18. Trio – асинхронное программирование для людей https://habr.com/ru/company/barsgroup/blog/490872/ 322 | 19. Asyncio Coroutine Patterns (Yeray Diaz): Beyond await https://medium.com/python-pandemonium/asyncio-coroutine-patterns-beyond-await-a6121486656f и Errors and cancellation https://medium.com/@yeraydiazdiaz/asyncio-coroutine-patterns-errors-and-cancellation-3bb422e961ff 323 | 20. Lynn Root - asyncio in Practice: We Did It Wrong https://www.youtube.com/watch?v=1lJDZx6f6tY (видео доклада) и https://www.roguelynn.com/words/asyncio-we-did-it-wrong/ (цикл статей) 324 | 21. How to ensure asyncio task exceptions always get logged (Quantlane tech blog) https://quantlane.com/blog/ensure-asyncio-task-exceptions-get-logged/ 325 | 326 | 327 | ### Работа с памятью [^](#index "к оглавлению") 328 | > Питон - очень неэкономный по памяти язык. Иногда возникают задачи, которые требуют знаний про то как питон работает с памятью (счетчик ссылок, арены и GC для циклических ссылок) и как можно эту память сэкономить. 329 | 1. «Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС https://www.youtube.com/watch?v=D0vbuIDOV4c 330 | 2. Python потребляет много памяти, или как уменьшить размер объектов. (доклад З.Шибзухова) https://www.youtube.com/watch?v=qUnzGUz_YxE 331 | 3. Что внутри у питона: как устроена память (доклад З. Обуховской) https://www.youtube.com/watch?v=lSgoYx06L_s 332 | 4. В. Синицын - Python: управление памятью https://www.youtube.com/watch?v=ZxvwZ4fX_qE 333 | 5. Nina Zakharenko - Memory Management in Python - The Basics https://www.youtube.com/watch?v=URNdRl97q_0 334 | 6. Всё, что нужно знать о сборщике мусора в Python (Artem Golubin) https://habr.com/ru/post/417215/ 335 | 7. Модуль GC стандартной библиотеки - официальная документация https://docs.python.org/3/library/gc.html 336 | 8. Python memory managment 101 .Deeping garbage collector (J.M. Ortega, PyCon HK) https://www.youtube.com/watch?v=MHTJQao9Ex0 337 | 9. Основы управления памятью в Python https://webdevblog.ru/osnovy-upravleniya-pamyatju-v-python/ 338 | 10. Memory Management in Python https://realpython.com/python-memory-management/ (перевод https://habr.com/ru/company/ruvds/blog/441568/) 339 | 11. Управление памятью в Python https://habr.com/ru/company/mailru/blog/336156/ 340 | 12. Пару слов о профилировании памяти в Python https://otus.ru/nest/post/818/ 341 | 13. Finding and Fixing Memory Leaks in Python (Peter Karb, Buzzfeed) https://tech.buzzfeed.com/finding-and-fixing-memory-leaks-in-python-413ce4266e7d 342 | 14. Pylint: о попытке снизить потребление памяти https://habr.com/ru/company/ruvds/blog/524940/ 343 | 15. Эффективно работаем со сложными структурами данных в Python 3.7+ (Диджитализируй!) https://www.youtube.com/watch?v=tsEG0WM3m_M 344 | 16. Slots, slots, slots, everybody: an exploration of `__slots__` (Douglas Anderson) (PyCon Canada 2018) https://www.youtube.com/watch?v=AR3hD43HLNE 345 | 17. Python, Linkers, and Virtual Memory (PyCon US 2012) https://www.youtube.com/watch?v=twQKAoq2OPE 346 | 18. Python Tutorials - Memory size Memory management of Python data structures https://www.youtube.com/watch?v=E07JCf87_C8 347 | 19. Как работает память в Python, DomClick https://habr.com/ru/company/domclick/blog/530804/ 348 | 20. Ультимативный гайд по поиску утечек памяти в Python, DomClick https://habr.com/ru/company/domclick/blog/532030/ 349 | 21. How I Tried To Reduce Pylint Memory Usage https://rtpg.co/2020/10/12/pylint-usage.html 350 | 22. Python Memory Deep Dive for Speed and Efficiency, Michael Kennedy https://www.youtube.com/watch?v=d9mSIEIcTpo 351 | 23. Fabio Falzoi - An insight into Python Garbage Collection https://www.youtube.com/watch?v=pqCQ5AwCJqE 352 | 24. Помнить всё. Как работает память в Python (ProgLib) https://proglib.io/p/pomnit-vse-kak-rabotaet-pamyat-v-python-2021-03-14 353 | 354 | 355 | ### Вопросы производительности [^](#index "к оглавлению") 356 | > Несмотря на то, что питон - не самый быстрый язык, интерпретатор постоянно оптимизируют 357 | 1. Python — это медленно. Почему? https://habr.com/ru/company/ruvds/blog/418823/ 358 | 2. Что я узнал про оптимизацию в Python (перевод статьи Gregory Szorc's) https://habr.com/ru/company/otus/blog/457942/ 359 | 3. Which is the fastest version of Python? (статья Anthony Shaw, сравнение 2.7-3.7+pypy) https://hackernoon.com/which-is-the-fastest-version-of-python-2ae7c61a6b2b 360 | 4. Оптимизации, сделавшие Python 3.6 быстрее Python 3.5 https://www.youtube.com/watch?v=zMECweCmuA4 361 | 5. Anthony Shaw - Why is Python slow? (pycon) https://www.youtube.com/watch?v=I4nkgJdVZFA 362 | 6. Python, производительность, перспективы // Кирилл Борисов (Pytup) https://youtu.be/brA7HLZEN4w?t=8669 363 | 7. Что делать, если ваш код на Python тормозит / Григорий Бакунов (Яндекс) https://www.youtube.com/watch?v=77B2-Pk1fls 364 | 8. Григорий Петров - Почему Python медленный? https://www.youtube.com/watch?v=39XNklRQJI4 365 | 366 | 367 | ### Профайлинг [^](#index "к оглавлению") 368 | > Как и для других ЯП, для питона существует ряд статистических (низкий оверхед и более низкая точность) и инструментальных (более высокая точность и высокий оверхед) профилировщиков 369 | 1. Flamegraph семплирующий профайлинг https://www.youtube.com/watch?v=kRA0RZoycMQ 370 | 2. PyConBY 2020: Christian Heimes - Introduction to low level profiling and tracing https://www.youtube.com/watch?v=PXEP97uU0NQ 371 | 3. Summary Of Python Profiling Tools http://pramodkumbhar.com/2019/05/summary-of-python-profiling-tools-part-i/ (на этом сайте есть еще хорошие статьи о производительности) 372 | 4. Профилирование и отладка Python (цикл статей от mail.ru): https://habr.com/ru/company/mailru/blog/201594/ (теория), https://habr.com/ru/company/mailru/blog/201778/ (ручное и статистическое), https://habr.com/ru/company/mailru/blog/202832/ (событийное) 373 | 5. Крутой sampling-профайлер (строит флеймграфы также) https://github.com/benfred/py-spy (must-have, так как pyflame больше по поддерживается) 374 | 6. Алексей Кузьмин, ДомКлик «Поиск и оптимизация узких мест в Python» (+ про память) https://www.youtube.com/watch?v=tDZHhIiACDA 375 | 7. Flamegraph that! Self-service profiling tool for Node and Python services (Ruth Grace Wong, Pinterest) https://www.youtube.com/watch?v=w97I5q0hbkw 376 | 8. Иван Ремизов "Сверхоптимизация кода на Python" (PiterPy) доклад старый, но полезный https://www.youtube.com/watch?v=4CsOOfdoU2A 377 | 9. PyTrace — Time Travel Debugger для Python https://habr.com/ru/post/504908/ 378 | 10. Python Profiling and Performance Tuning in Production (Joe Gordon, Pinterest) https://www.youtube.com/watch?v=B9Kv3Fije1I, https://www.youtube.com/watch?v=bectZn_yNwg 379 | 11. Production-time Profiling for Python (Julien Danjou) https://www.youtube.com/watch?v=kLO81hMRwgI 380 | 12. Beyond cProfile: performance optimization with sampling profilers and logging https://www.youtube.com/watch?v=fOzVTPOWfQs 381 | 13. `/usr/bin/time -v python3 my_script.py` (`-l` для mac os) 382 | 14. Удобное профилирование простых скриптов в `ipython` https://jakevdp.github.io/PythonDataScienceHandbook/01.07-timing-and-profiling.html 383 | 15. Profiling Python by Example, Eyal Trabelsi (PyCon Sweden) Хороший обзор основных типов https://www.youtube.com/watch?v=9wfFXRCkkLE 384 | 16. Python Profiling and Performance Tuning - PyCon APAC 2016 (Joe Gordon ) https://www.youtube.com/watch?v=noxCqWJieB4 385 | 17. Python Profilers We Built for Efficiency – PyCon Taiwan 2019 https://www.youtube.com/watch?v=liOWqXkAy8s 386 | 18. Emin Martinian - Statistical Profiling (and other fun with the sys module) - PyCon 2019 https://www.youtube.com/watch?v=d5SGUscT2GA 387 | 19. Flame graph новый взгляд на привычное профилирование, Кирилл Борисов, Яндекс https://www.youtube.com/watch?v=pa_kAkXuOyA 388 | 20. 9 nifty libraries for profiling Python code (InfoWorld) https://www.infoworld.com/article/3600993/9-nifty-libraries-for-profiling-python-code.html 389 | 21. Новая интересная тулза для профилирования памяти https://github.com/bloomberg/memray 390 | 391 | 392 | ### Логирование и трейсинг [^](#index "к оглавлению") 393 | 1. Трейсинг в микросервисной архитектуре на Python https://www.youtube.com/watch?v=DpndyJ-CK5s 394 | 2. Читаем исходники open source Python библиотек. Библиотека Loguru (Диджитализируй!) https://www.youtube.com/watch?v=g6zzZxxifAw 395 | 3. Про Jaeger: как мы внедряли распределенную трассировку запросов, Амангельды Кыдыл https://www.youtube.com/watch?v=O5I301lYjzM 396 | 4. Mario Corchero - Effortless Logging: A deep dive into the logging module - PyCon 2018 https://www.youtube.com/watch?v=Pbz1fo7KlGg 397 | 5. OpenTracing with Jaeger - Utah Go User Group https://www.youtube.com/watch?v=GccUVCI5TkM 398 | 6. OpenTracing не только для распределенной трассировки. Константин Черкасов, Lazada https://www.youtube.com/watch?v=nHgfJ943z2I 399 | 7. OpenTelemetry // Андрей Гейн (Pytup) https://www.youtube.com/watch?v=brA7HLZEN4w&t=1864s 400 | 401 | 402 | ### Модули на C (C++, Rust, Go) и ctypes [^](#index "к оглавлению") 403 | > Когда нужно писать модуль на C: тяжелые вычисления, чтобы отпустить gil, чтобы использовать какую-либо сишную библиотеку, при работе с бинарными данными, для низкоуровневых задач, когда требуется особая работа с памятью 404 | 1. Building a Python C Extension Module (real python) https://realpython.com/build-python-c-extension-module/ 405 | 2. Производительность в Python. Легкий путь (o ctypes) https://habr.com/ru/post/157537/ (дока https://docs.python.org/3/library/ctypes.html) 406 | 3. Python — Программирование расширений на C https://coderlessons.com/tutorials/python-technologies/vyuchit-piton/python-programmirovanie-rasshirenii-na-c 407 | 4. C/C++ из Python (ctypes) (хабр) https://habr.com/ru/post/466499/ 408 | 5. Как писать модули для питона на C и go (первый доклад pytup'a) https://youtu.be/tpKs4UVe3Bk?t=487 409 | 6. Андрей Светлов - Оптимизация производительности при помощи Cython https://www.youtube.com/watch?v=5-WoT4X17sk 410 | 7. Anton Zhdan-Pushkin: Under the hood of calling C/C++ from Python https://azhpushkin.me/posts/python-c-under-the-hood 411 | 8. Расширение Python на C: заставляем Python ползти быстрее // Бесплатный урок Otus https://www.youtube.com/watch?v=yUJwYluM9ao 412 | 9. Cython as a Game Changer for Efficiency (Alex Orlov) PyCon 2017 https://www.youtube.com/watch?v=_1MSX7V28Po 413 | 10. Why should you learn writing C extension? (Gavin Chan) (Hong Kong) - PyCon HK 2020 Spring https://www.youtube.com/watch?v=FOwV8apw_nQ 414 | 11. Call C code quickly and compatibly with CFFI (Zachary Voase) (PyCon Canada 2018) https://www.youtube.com/watch?v=EdUa5Sbf-4U 415 | 12. Bringing C performance to Python code, about Cython (Jan Škoda) (PyCOn CZ 2017) https://www.youtube.com/watch?v=G2yY3unaF0I 416 | 13. Pumping up Python modules using Rust - PyCon APAC 2018 https://www.youtube.com/watch?v=rqmGnggorLI 417 | 14. Любовь. Python. C++ // Александр Букин (Pytup) https://www.youtube.com/watch?v=brA7HLZEN4w&t=0s 418 | 15. Writing Python extensions in Rust https://www.youtube.com/watch?v=BgzIaEzXEBU 419 | 16. Tadas Barzdžius. Speeding up Python with Rust (PyCon LT) https://www.youtube.com/watch?v=5vkvy29tL28 420 | 421 | 422 | ### Тестирование [^](#index "к оглавлению") 423 | > Популярные библиотеки - pytests и unittest. Дата-провайдеры и фикстуры. Доктесты 424 | 1. Введение в автотесты. Вебинар от OTUS https://www.youtube.com/watch?v=EBMXOsCL9AA 425 | 2. Тестирование. Лекция из Академии Яндекса https://www.youtube.com/watch?v=2-EBSIRs0H4&list=PLQC2_0cDcSKBHamFYA6ncnc_fYuEQUy0s&index=4 426 | 3. Лекция про тестирование от CSC https://www.youtube.com/watch?v=VomXaukdWxo 427 | 4. TDD c pytest и без него. Урок OTUS https://www.youtube.com/watch?v=lxVv8cdSTsw 428 | 5. Эффективное тестирование с pytest (урок OTUS) https://www.youtube.com/watch?v=saf1_VmMz5U 429 | 6. Автоматизация тестирования API (pytest) https://www.youtube.com/watch?v=niDC5OlM8eI 430 | 7. Сергей Борисов, ДомКлик, мастер-класс "Тестирование асинхронных приложений" https://www.youtube.com/watch?v=BXn30wqy-og 431 | 8. Workshop: Modern Python Developer's Toolkit, Sebastian Witowski (в т.ч. про pytest) https://youtu.be/om4BSW-lpd8?t=3559 432 | 9. Pytest: введение в автотесты (урок OTUS) https://www.youtube.com/watch?v=gEkF0He5L04 433 | 10. Raphael Pierzina - Advanced pytest (EuroPython 2019) https://www.youtube.com/watch?v=gJtE-anbcww 434 | 11. Productive pytest with PyCharm (JetBrainsTV) https://www.youtube.com/watch?v=ixqeebhUa-w 435 | 12. How to Write Pytest Plugins - Darlene Wong (PyBay 2019) https://www.youtube.com/watch?v=QwDhzFkE9J4 436 | 13. Automated testing with pytest and fixtures (PyGotham 2017) https://www.youtube.com/watch?v=8mp_1Jt-xHQ 437 | 14. Mocking in Python, Mark McDonnell https://www.integralist.co.uk/posts/mocking-in-python/ 438 | 439 | 440 | ### Утилиты для улучшения качества кода [^](#index "к оглавлению") 441 | 1. Python Code Quality: Tools & Best Practices https://realpython.com/python-code-quality/ 442 | 2. Как прокачать линтер. Максим Мазаев https://www.youtube.com/watch?v=HZPRoz8V6jk (этот же доклад https://www.youtube.com/watch?v=ZKoBZkdYLiM и статья https://habr.com/ru/company/oleg-bunin/blog/433474/) 443 | 3. Презентация "HOW TO WRITE PYLINT PLUGINS" Александра Тодорова https://piterpy.com/system/attachments/files/000/001/519/original/how_to_write_pylint_plugins_PiterPy_2018.pdf 444 | 4. Аннотации типов в Python 3 (урок OTUS) https://youtu.be/I09iX8aoCsw?t=313 445 | 5. «Модифицируй это!» или «Больше магии Python с помощью изменения AST» (А. Маршалов) https://www.youtube.com/watch?v=Zv6yT-ytIvg 446 | 6. Инструменты для анализа кода Python https://proglib.io/p/python-code-analysis (ч.1), https://proglib.io/p/python-code-analysis-tools (ч.2) 447 | 7. Г. Петров PyRe: еще один type checker https://www.youtube.com/watch?v=-Lz81ex3jP8 448 | 8. Разработка плагинов к mypy / Владимир Пузаков https://www.youtube.com/watch?v=l7hDWA5uC0A 449 | 9. Python Type Checking (Guide) https://realpython.com/python-type-checking/ 450 | 10. Bernat Gabor - Type hinting (and mypy) - PyCon 2019 https://www.youtube.com/watch?v=hTrjTAPnA_k 451 | 11. Максим Мазаев, ЦИАН "Проверка типов в большом проекте" https://www.youtube.com/watch?v=iEuTGu1ks7I 452 | 12. Łukasz Langa - Life Is Better Painted Black, or: How to Stop Worrying and Embrace Auto-Formatting https://www.youtube.com/watch?v=esZLCuWs_2Y 453 | 13. Dustin Ingram - Static Typing in Python (pycon) https://www.youtube.com/watch?v=ST33zDM9vOE 454 | 14. Как работать с типизацией в Python (tproger) https://tproger.ru/articles/python-typing/ 455 | 15. Alexander Todorov: "How to write pylint plugins" / #PiterPy https://www.youtube.com/watch?v=3CkSKUNMLJc 456 | 16. Добровольная типизация в Python 3 (и не только), Максим Кольцов / PiterPy Meetup #12 https://www.youtube.com/watch?v=EU9DoJD1olo 457 | 17. Refactoring Code With the Standard Library (AST/CST), John Reese, PyCon AU 2018 https://www.youtube.com/watch?v=9USGh4Uy-xQ 458 | 18. A flake8 plugin from scratch (intermediate) anthony explains https://www.youtube.com/watch?v=ot5Z4KQPBL8 459 | 460 | 461 | ### Вопросы безопасности [^](#index "к оглавлению") 462 | 1. Security considerations in Python Packaging https://www.youtube.com/watch?v=tHlMw9zFgQE 463 | 464 | 465 | ### WCGI [^](#index "к оглавлению") 466 | 1. Введение в WSGI-серверы: Часть первая https://habr.com/ru/post/426957/ 467 | 2. Анализ производительности WSGI-серверов: Часть вторая https://habr.com/ru/post/427217/ 468 | 3. WSGI Servers (Full Stack Python) https://www.fullstackpython.com/wsgi-servers.html 469 | 470 | 471 | ### Работа с СУБД. Драйверы. Популярные ORM [^](#index "к оглавлению") 472 | > Самые популярные ORM для питона - SQLAlchemy и Django ORM, pewee. 473 | 1. Introduction to Python SQL Libraries (real python) https://realpython.com/python-sql-libraries/ 474 | 2. "Let's Build an ORM" - Greg Back (Pyohio 2019) https://www.youtube.com/watch?v=6rw0p9AOYb8 475 | 3. Object-relational Mappers (ORMs) (обзор, fullstackpython) https://www.fullstackpython.com/object-relational-mappers-orms.html 476 | 4. Python: Работа с базой данных (хабр) https://habr.com/ru/post/321510/ (db-api), https://habr.com/ru/post/322086/ (orm) 477 | 5. Асинхронные драйверы для работы с различными БД от создателей `asyncio` https://github.com/aio-libs 478 | 6. Список асинхронных драйверов для БД https://github.com/timofurrer/awesome-asyncio#database-drivers 479 | 7. SQLAlchemy ORM: удобная работа с базами данных на Python (ITVDN) https://www.youtube.com/watch?v=PAKJpfxeXjc 480 | 8. Сравнение технологий aiopg & asyncpg, Алексей Фирсов / PyDaCon meetup https://www.youtube.com/watch?v=bY6ZU0-26TA 481 | 9. "SQLAlchemy: Python vs Raw SQL" Денис Катаев https://www.youtube.com/watch?v=jUGK-CtM-Mk 482 | 10. "Пишем приложения на SQLAlchemy" Денис Катаев https://www.youtube.com/watch?v=vXBlOvmzs_0 483 | 484 | 485 | ### Работа с данными [^](#index "к оглавлению") 486 | 1. Python NumPy Tutorial for Beginners (Freecodecamp.org) https://www.youtube.com/watch?v=QUT1VHiLmmI 487 | 2. Pandas: How to Read and Write Files https://realpython.com/pandas-read-write-files/ 488 | 3. The Pandas DataFrame: Make Working With Data Delightful https://realpython.com/pandas-dataframe/ 489 | 4. Using Pandas and Python to Explore Your Dataset https://realpython.com/pandas-python-explore-dataset/ 490 | 5. NumPy, SciPy, and Pandas: Correlation With Python https://realpython.com/numpy-scipy-pandas-correlation-python/ 491 | 6. Python Statistics Fundamentals: How to Describe Your Data https://realpython.com/python-statistics/ 492 | 7. Data Analysis with Python - Full Course for Beginners (Numpy, Pandas, Matplotlib, Seaborn) https://www.youtube.com/watch?v=r-uOLxNrNk8 493 | 8. 6 способов значительно ускорить pandas с помощью пары строк кода https://habr.com/ru/post/503726/ 494 | 9. A Beginner’s Guide to Optimizing Pandas Code for Speed https://engineering.upside.com/a-beginners-guide-to-optimizing-pandas-code-for-speed-c09ef2c6a4d6 495 | 10. Kevin Markham - Data Science Best Practices with pandas - PyCon 2019 https://www.youtube.com/watch?v=ZjrUmNq41Eo 496 | 497 | 498 | ### Работа с файлами [^](#index "к оглавлению") 499 | 1. Working With Files in Python https://realpython.com/working-with-files-in-python/ 500 | 501 | 502 | ### Сетевое программирование [^](#index "к оглавлению") 503 | 1. Python 3 — Сетевое программирование https://coderlessons.com/tutorials/python-technologies/izuchite-python-3/python-3-setevoe-programmirovanie 504 | 2. Network Programming with Python Course (freeCodeCamp.org) https://www.youtube.com/watch?v=FGdiSJakIS4 505 | 3. Сокеты в Python для начинающих https://habr.com/ru/post/149077/ 506 | 507 | 508 | ### GUI [^](#index "к оглавлению") 509 | > На питоне можно разрабатывать программы с графическим интерфейсом - для этого есть несколько популярных библиотек 510 | 1. Серия статей Python GUI Programming (RealPython). Обзор библиотек PySimpleGUI, Tkinter, PyQt, wxPython https://realpython.com/learning-paths/python-gui-programming/ 511 | 2. Python GUI: создаём простое приложение с PyQt и Qt Designer (tproger) https://tproger.ru/translations/python-gui-pyqt/ 512 | 3. 13 GUI-библиотек Python https://techrocks.ru/2018/04/26/13-python-gui-frameworks/ 513 | 4. Серия статей о PyQT5 с примерами http://zetcode.com/gui/pyqt5/ 514 | 5. Tkinter Course - Create Graphic User Interfaces in Python Tutorial (freecodecamp) https://www.youtube.com/watch?v=YXPyB4XeYLA 515 | 6. Создание desktop-приложений на Python (доклад на MoscowPython) https://www.youtube.com/watch?v=nz6G_ta3of0 516 | 7. PyQt Layouts: Create Professional-Looking GUI Applications (realpython) https://realpython.com/python-pyqt-layout/ 517 | 518 | 519 | ### Мониторинг приложений средствами ОС [^](#index "к оглавлению") 520 | 1. Более чем 80 средств мониторинга системы Linux https://habr.com/ru/company/ua-hosting/blog/281519/ 521 | 2. Strace в Linux: история, устройство и использование https://habr.com/ru/company/badoo/blog/493856/ 522 | 3. Краткий гайд по использованию GDB https://habr.com/ru/post/491534/ 523 | 4. Sysdig — инструмент для диагностики Linux-систем https://habr.com/ru/company/selectel/blog/222839/ 524 | 5. Perf и flamegraphs https://habr.com/ru/company/selectel/blog/437808/ 525 | 6. perf-tools by Brendan Gregg https://github.com/brendangregg/perf-tools, http://www.brendangregg.com/perf.html 526 | 7. htop и многое другое на пальцах https://habr.com/ru/post/316806/ 527 | 8. Как посмотреть потоки процесса в Linux https://losst.ru/kak-posmotret-potoki-protsessa-v-linux 528 | 9. Удивительно полезный инструмент: lsof https://habr.com/ru/company/ruvds/blog/337934/ 529 | 10. Brebdan Gregg: perf Examples (профилирующая тулза) http://www.brendangregg.com/perf.html 530 | 11. Sysdig — инструмент для диагностики Linux-систем https://habr.com/ru/company/selectel/blog/222839/ 531 | 12. Отлаживаем развертывание ПО со strace https://habr.com/ru/company/southbridge/blog/478626/ 532 | 13. Как узнать оперативную память Linux https://losst.ru/ispolzovanie-operativnoj-pamyati-linux 533 | 14. Чудеса трассировки: Решение проблем с приложениями при помощи утилиты strace https://xakep.ru/2011/01/13/54477/ 534 | 15. Файловая система proc в Linux https://losst.ru/fajlovaya-sistema-proc-v-linux 535 | 16. Перевод комиксов Джулии Эванс про системные утилиты https://firstvds.ru/blog/julia_evans 536 | 17. Изучаем трассировку с помощью eBPF: Руководство и примеры https://habr.com/ru/post/435142/ 537 | 18. Трассировка и профайлинг в Linux с помощью bcc/eBPF https://eax.me/bcc-ebpf/ 538 | 19. BpfTrace - наконец, полноценная замена Dtrace в Linux / Пётр Зайцев (Percona) https://www.youtube.com/watch?v=6ExXwQecMrs 539 | 20. Introduction to profiling python performance with USDT https://www.youtube.com/watch?v=Zv3--YaaIe0 540 | 21. Установка и простые примеры использования SystemTap https://eax.me/systemtap/ 541 | 22. Instrumenting CPython with DTrace and SystemTap https://docs.python.org/3/howto/instrumentation.html 542 | 23. Dive into BPF performance tools using python Андрей Солдатенко https://www.youtube.com/watch?v=8S8zwJBOD0w 543 | 24. Tracing, Profiling & Debugging in Production (eBPF) - Trent Lloyd (PyCon AU 2019) https://www.youtube.com/watch?v=jXzEzmz-oag 544 | 25. Команда top в Linux https://losst.ru/komanda-top-v-linux 545 | 26. Полнофункциональная динамическая трассировка в Linux с использованием eBPF и bpftrace https://www.itsumma.ru/knowledges/blog/tracing 546 | 27. Velocity 2017: Performance Analysis Superpowers with Linux eBPF https://www.youtube.com/watch?v=bj3qdEDbCD4 547 | 28. Jesús Cea Avión - Python and DTrace https://www.youtube.com/watch?v=HwqvHUGyGTE 548 | 29. Root Cause Analysis with eBPF & Python - Pavel Rogovoy - PyCon Israel 2019 https://www.youtube.com/watch?v=hEBZ_htE0IQ 549 | 30. Using Python to make sense of system traces (Jérémie Galarneau) (PyCon Canada 2017) (демки https://github.com/jgalar/PyConCanada2017) https://www.youtube.com/watch?v=gKmtmPqr6H8 550 | 31. Вглубь ядра: знакомство с LTTng https://habr.com/ru/company/selectel/blog/300966/ 551 | 32. BPF code with Python: A Gentle Introduction to BPF part 2 (Michael Mullin) https://www.youtube.com/watch?v=ayxHANt1YaI 552 | 553 | 554 | ### Нагрузочное тестирование python-приложений [^](#index "к оглавлению") 555 | 1. Python инструменты для нагрузочного тестирования https://www.youtube.com/watch?v=-kWm5V9pyCY 556 | 2. Открытые бенчмарки для нагрузочного тестирования серверов и веб-приложений https://habr.com/ru/company/1cloud/blog/474474/ 557 | 3. Load Testing with Vegeta https://www.scaleway.com/en/docs/vegeta-load-testing/ 558 | 4. Locust: нагрузочное тестирование веб-сервисов / Алексей Романов https://www.youtube.com/watch?v=65Xa__DMhAw 559 | 560 | 561 | ## Полезное [^](#index "к оглавлению") 562 | 563 | ### Must-read книги [^](#index "к оглавлению") 564 | 1. Лучано Рамальо: Python. К вершинам мастерства (Fluent Python) https://www.ozon.ru/context/detail/id/135305378/ 565 | 2. Данжу Джульен: Путь Python. Черный пояс по разработке, масштабированию, тестированию и развертыванию https://www.ozon.ru/context/detail/id/158868396/ 566 | 3. Бейдер Дэн: Чистый Python. Тонкости программирования для профи https://www.ozon.ru/context/detail/id/146393762/ 567 | 4. Mohamed Mustapha Tahrioui: asyncio Recipes. A Problem-Solution Approach https://www.apress.com/gp/book/9781484244005 568 | 5. Caleb Hattingh: Using Asyncio in Python https://www.oreilly.com/library/view/using-asyncio-in/9781492075325/ 569 | 570 | ### Telegram-каналы [^](#index "к оглавлению") 571 | 1. pythonist.ru (статьи и задачки для собеседований) https://t.me/pythonist_ru 572 | 2. Книги https://t.me/python_textbooks 573 | 3. Задачки, в основном несложные https://t.me/pythonquestions 574 | 4. Англоязычный канал со статьями https://t.me/pythonl 575 | 5. Тесты https://t.me/pythontesti 576 | 6. Proglib (статьи, не только питон) https://t.me/proglibrary 577 | 7. Лучшие статьи https://t.me/zen_of_python 578 | 579 | ### Тесты и задачки для проверки знаний [^](#index "к оглавлению") 580 | 1. Real Python Quizzes https://realpython.com/quizzes/ 581 | 2. PYnative Python Quizes https://pynative.com/python-quizzes/ 582 | 583 | ### Рассылки 584 | 1. Еженедельная рассылка со свежими новостями и полезностями https://pycoders.com/ 585 | 586 | ### Митапы и конференции [^](#index "к оглавлению") 587 | 1. Moscow python meetup (+ Moscow python conf) https://www.youtube.com/user/moscowdjangoru 588 | 2. Minsk python meetup https://www.youtube.com/user/pythonMinsk 589 | 3. Python Meetup Chelyabinsk https://www.youtube.com/channel/UCpMh_XSn7yGPabFBYzY5hKg 590 | 4. Python Новосибирск https://www.youtube.com/c/PyNSK/ 591 | 5. PyCon Russia https://www.youtube.com/user/videoitpeople/videos 592 | 6. Moscow Python Conf++ https://www.youtube.com/channel/UCqC1iSQnRIDz_rOy8LHe69g 593 | 7. EuroPython Conference https://www.youtube.com/c/EuroPythonConference 594 | --------------------------------------------------------------------------------