Wydajny Python

Tytuł: Wydajny Python
Kod: python-perf
Kategoria: Python
Forma: 30% wykłady / 70% warsztaty
Czas trwania: 3 dni
Odbiorcy: developerzy, architekci
Zapisy: Indywidualne zamówienie i dopasowanie dla grupy.
Logistyka: W siedzibie klienta lub w innym dowolnym miejscu.

Szkolenie z poprawiania wydajności w projektach opartych o Pythona.

Bezlitośnie porusza słabe strony języka i uczy je obchodzić. Uczestnik po ukończeniu będzie umiał znaleźć źródła problemów wydajnościowych i odpowiednio spriorytetyzować ich usunięcie.

Dzień 1: Jak mierzyć performance w Pythonie, czyli szukanie właściwego problemu do rozwiązania

Dzień 2: Optymalizowanie na poziomie kodu

Dzień 3: Optymalizowanie na poziomie architektury

Wyróżniki szkolenia

  • Studia przypadku
  • Systemy rozproszone
  • Narzędzia i pułapki

Program Szkolenia

Program jest ramą w jakiej możemy się poruszać merytorycznie - program dla konkretnego szkolenia dedykowanego ustalamy z grupą na podstawie analizy przed-szkoleniowej.

  1. Słabości Pythona
    1. Wysoki poziom abstrakcji
    2. Ograniczone możliwości zrównoleglania pracy
    3. GIL
  2. Mierz, nie zgaduj
    1. Clock time kontra wall time
    2. Utylizacja zasobów (CPU, Pamięć)
    3. Przykłady
      1. Jednowątkowy socket kontra serwer asyncio
      2. Który serwer WSGI wybrać?
      3. Dlaczego benchmarki nie pokazują całej prawdy?
    4. Teoria ograniczeń i poszukiwanie wąskich gardeł (ang. bottlenecks)
  3. Microbenchmarking
    1. ręcznie z użyciem funkcji time
    2. timeit
      1. do sprawdzania małych kawałków kodu
  4. Profilowanie kodu - narzędzia
    1. cProfile
    2. line_profiler
    3. memory_profiler
    4. yappi
    5. django-silk
  5. Usługi chmurowe APM - przegląd możliwości
  6. Optymalizowanie przy problemie z bazą danych
    1. Profilowanie i optymalizacja zapytań na przykładzie PostgreSQL
    2. Cache’owanie
      1. Jak przebudowywać cache?
    3. Tworzenie dedykowanego modelu do odczytu (ang. read model)
      1. Synchronicznie
      2. Asynchronicznie
  7. Dobieranie struktury danych do problemu
    1. Lista
    2. Krotka (ang. tuple)
    3. Słownik
    4. Zbiór
    5. collections.deque
    6. Czy ma sens implementowanie swojej struktury danych?
  8. Analizowanie wolnego kodu
    1. Notacja dużego O - przypadki pesymistyczne
    2. Szukanie dominującej operacji
    3. Zastępowanie szeregu instrukcji warunkowych
      1. słownikiem
      2. polimorfizmem
  9. Przetwarzanie równoległe i asynchroniczne
    1. Jak zrównoleglić obliczenia?
      1. Nie każdy problem da się zrównoleglić
      2. Pula wątków - ThreadPoolExecutor
      3. Pula procesów - ProcessPoolExecutor
    2. Dask
    3. Kolejki zadań
      1. Tworzenie szeregu zadań
      2. Wzorzec Polling + puszczenie zadanie do kolejki
  10. Wydajność w systemach rozproszonych
    1. Najpierw zmierz
      1. Distributed tracing z wykorzystaniem zewnętrznych usług
      2. Distributed tracing z wykorzystaniem Zipkina
    2. Znajdowanie wąskich gardeł i ich optymalizacja
    3. Budowanie metryk
  11. Na problemy klasy IO-bound - Asyncio
    1. C10k problem
    2. Kiedy używać
    3. Modelowanie z użyciem asyncio
    4. Testowanie
  12. Studia przypadków
    1. Czat
    2. Web scraping
    3. Aukcje internetowe
      1. tradycyjna aukcja
      2. ślepa aukcja
    4. Silnik giełdowy z obsługą zleceń LIMIT i STOP LOSS
    5. Python z JITem - PyPy
    6. Cython
      1. Podstawy
      2. Optymalizujemy kompilując wybrane moduły


Pobierz program w formacie PDF

Trenerzy

Poznaj ekspertów, którzy mogą poprowadzić Twoje szkolenie.

Zamów szkolenie

Imię i nazwisko:
Firma:
E-mail:
Nr tel:
Temat:
Wiadomość:

Jeżeli preferujesz osobisty kontakt to zawsze możesz zadzwonić.

Iwona Sobótka

Koordynatorka szkoleń


Twoje dane osobowe przetwarzamy, aby udzielić odpowiedzi na Twoje pytanie. Administratorem Twoich danych osobowych jest Bottega It Minds Sławomir Sobótka. Przysługuje Ci prawo wniesienia sprzeciwu wobec przetwarzania, prawo dostępu do danych, prawo żądania ich sprostowania, usunięcia lub ograniczenia ich przetwarzania. Szczegółowe informacje dotyczące przetwarzania Twoich danych osobowych znajdują się TUTAJ.