Facebook - konwersja
  • promocja

Wysoko wydajny Python. Efektywne programowanie w praktyce. Wydanie II - ebook

Wydawnictwo:
Tłumacz:
Data wydania:
21 stycznia 2021
Format ebooka:
EPUB
Format EPUB
czytaj
na czytniku
czytaj
na tablecie
czytaj
na smartfonie
Jeden z najpopularniejszych formatów e-booków na świecie. Niezwykle wygodny i przyjazny czytelnikom - w przeciwieństwie do formatu PDF umożliwia skalowanie czcionki, dzięki czemu możliwe jest dopasowanie jej wielkości do kroju i rozmiarów ekranu. Więcej informacji znajdziesz w dziale Pomoc.
Multiformat
E-booki w Virtualo.pl dostępne są w opcji multiformatu. Oznacza to, że po dokonaniu zakupu, e-book pojawi się na Twoim koncie we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu.
, PDF
Format PDF
czytaj
na laptopie
czytaj
na tablecie
Format e-booków, który możesz odczytywać na tablecie oraz laptopie. Pliki PDF są odczytywane również przez czytniki i smartfony, jednakze względu na komfort czytania i brak możliwości skalowania czcionki, czytanie plików PDF na tych urządzeniach może być męczące dla oczu. Więcej informacji znajdziesz w dziale Pomoc.
Multiformat
E-booki w Virtualo.pl dostępne są w opcji multiformatu. Oznacza to, że po dokonaniu zakupu, e-book pojawi się na Twoim koncie we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu.
, MOBI
Format MOBI
czytaj
na czytniku
czytaj
na tablecie
czytaj
na smartfonie
Jeden z najczęściej wybieranych formatów wśród czytelników e-booków. Możesz go odczytać na czytniku Kindle oraz na smartfonach i tabletach po zainstalowaniu specjalnej aplikacji. Więcej informacji znajdziesz w dziale Pomoc.
Multiformat
E-booki w Virtualo.pl dostępne są w opcji multiformatu. Oznacza to, że po dokonaniu zakupu, e-book pojawi się na Twoim koncie we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu.
(3w1)
Multiformat
E-booki sprzedawane w księgarni Virtualo.pl dostępne są w opcji multiformatu - kupujesz treść, nie format. Po dodaniu e-booka do koszyka i dokonaniu płatności, e-book pojawi się na Twoim koncie w Mojej Bibliotece we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu przy okładce. Uwaga: audiobooki nie są objęte opcją multiformatu.
czytaj
na laptopie
Pliki PDF zabezpieczone watermarkiem możesz odczytać na dowolnym laptopie po zainstalowaniu czytnika dokumentów PDF. Najpowszechniejszym programem, który umożliwi odczytanie pliku PDF na laptopie, jest Adobe Reader. W zależności od potrzeb, możesz zainstalować również inny program - e-booki PDF pod względem sposobu odczytywania nie różnią niczym od powszechnie stosowanych dokumentów PDF, które odczytujemy każdego dnia.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na tablecie
Aby odczytywać e-booki na swoim tablecie musisz zainstalować specjalną aplikację. W zależności od formatu e-booka oraz systemu operacyjnego, który jest zainstalowany na Twoim urządzeniu może to być np. Bluefire dla EPUBa lub aplikacja Kindle dla formatu MOBI.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na czytniku
Czytanie na e-czytniku z ekranem e-ink jest bardzo wygodne i nie męczy wzroku. Pliki przystosowane do odczytywania na czytnikach to przede wszystkim EPUB (ten format możesz odczytać m.in. na czytnikach PocketBook) i MOBI (ten fromat możesz odczytać m.in. na czytnikach Kindle).
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na smartfonie
Aby odczytywać e-booki na swoim smartfonie musisz zainstalować specjalną aplikację. W zależności od formatu e-booka oraz systemu operacyjnego, który jest zainstalowany na Twoim urządzeniu może to być np. iBooks dla EPUBa lub aplikacja Kindle dla formatu MOBI.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.

Wysoko wydajny Python. Efektywne programowanie w praktyce. Wydanie II - ebook

Python jest językiem łatwym do opanowania i przyjemnym dla programisty. Jednak łatwość projektowania nie przekłada się na szybkość działania kodu. W konsekwencji przetwarzanie dużych wolumenów danych czy próba skalowania aplikacji kończą się problemami z wydajnością lub niezawodnością. Niekiedy rozwiązaniem jest zastosowanie procesów szeregowych, w innych przypadkach warto sięgnąć do architektury wielordzeniowej, klastrów lub układów GPU. Relatywnie często okazuje się, że dobre wyniki uzyskuje się w efekcie takiego zmodyfikowania technik kodowania, aby przy wykorzystaniu potencjału Pythona stosować sprawdzone metody poprawy wydajności kodu.

Dzięki drugiemu, poszerzonemu i zaktualizowanemu wydaniu tej książki zdobędziesz wszechstronną wiedzę o czynnikach wpływających na wydajność kodu. Dowiesz się, jakie procesy zachodzą w tle komputera, na jakich zasadach odbywa się przydzielanie pamięci, oraz zyskasz nowe spojrzenie na proces kompilacji do postaci kodu maszynowego. Zapoznasz się z zagadnieniem współbieżności i obliczeń klastrowych. Zaczniesz swobodnie posługiwać się najlepszymi narzędziami Pythona, takimi jak NumPy czy moduł multiprocessing. Z pewnością docenisz techniki zapewniające korzystanie z minimum zasobów, takich jak czas procesora czy pamięć RAM. Opisane tu zagadnienia zilustrowano przykładami kodu oraz poradami najlepszych specjalistów z branży.

W książce:

  • narzędzia NumPy, Cython i Docker
  • znajdowanie wąskich gardeł związanych z wykorzystaniem czasu procesora i pamięci
  • wydajność kodu a odpowiednie struktury danych
  • przyspieszanie obliczeń opartych na macierzach i wektorach
  • zarządzanie wieloma operacjami obliczeniowymi i wejścia-wyjścia
  • przetwarzanie współbieżne i uruchamianie kodu w klastrze

Programowanie w Pythonie: przede wszystkim wydajność i niezawodność!

Spis treści


Słowo wstępne 11

Przedmowa 13

1. Wydajny kod Python 19

  • Podstawowy system komputerowy 19
    • Jednostki obliczeniowe 20
    • Jednostki pamięci 23
    • Warstwy komunikacji 26
  • Łączenie ze sobą podstawowych elementów 27
    • Porównanie wyidealizowanego przetwarzania z maszyną wirtualną języka Python 27
  • Dlaczego warto używać języka Python? 31
  • Jak zostać bardzo wydajnym programistą? 34
    • Sprawdzone praktyki 35
    • Wnioski dotyczące sprawdzonych praktyk korzystania z rozszerzenia Jupyter Notebook 37
    • Niech praca znów sprawia radość 38

2. Użycie profilowania do znajdowania wąskich gardeł 39

  • Efektywne profilowanie 40
  • Wprowadzenie do zbioru Julii 41
  • Obliczanie pełnego zbioru Julii 45
  • Proste metody pomiaru czasu - instrukcja print i dekorator 48
  • Prosty pomiar czasu za pomocą polecenia time systemu Unix 51
  • Użycie modułu cProfile 52
  • Użycie narzędzia snakeviz do wizualizacji danych wyjściowych modułu cProfile 57
  • Użycie narzędzia line_profiler do pomiarów dotyczących kolejnych wierszy kodu 57
  • Użycie narzędzia memory_profiler do diagnozowania wykorzystania pamięci 63
  • Introspekcja istniejącego procesu za pomocą narzędzia py-spy 68
  • Kod bajtowy od podszewki 69
    • Użycie modułu dis do sprawdzenia kodu bajtowego narzędzia CPython 69
    • Różne metody, różna złożoność 71
  • Testowanie jednostkowe podczas optymalizacji w celu zachowania poprawności 73
    • Dekorator @profile bez operacji 73
  • Strategie udanego profilowania kodu 76
  • Podsumowanie 77

3. Listy i krotki 79

  • Bardziej efektywne wyszukiwanie 82
  • Porównanie list i krotek 84
    • Listy jako tablice dynamiczne 85
    • Krotki w roli tablic statycznych 88
  • Podsumowanie 89

4. Słowniki i zbiory 91

  • Jak działają słowniki i zbiory? 94
    • Wstawianie i pobieranie 94
    • Usuwanie 97
    • Zmiana wielkości 98
    • Funkcje mieszania i entropia 99
  • Słowniki i przestrzenie nazw 102
  • Podsumowanie 105

5. Iteratory i generatory 107

  • Iteratory dla szeregów nieskończonych 111
  • Wartościowanie leniwe generatora 112
  • Podsumowanie 116

6. Obliczenia macierzowe i wektorowe 117

  • Wprowadzenie do problemu 118
  • Czy listy języka Python są wystarczająco dobre? 122
    • Problemy z przesadną alokacją 123
  • Fragmentacja pamięci 126
    • Narzędzie perf 128
    • Podejmowanie decyzji z wykorzystaniem danych wyjściowych narzędzia perf 131
    • Wprowadzenie do narzędzia numpy 132
  • Zastosowanie narzędzia numpy w przypadku problemu dotyczącego dyfuzji 135
    • Przydziały pamięci i operacje wewnętrzne 138
    • Optymalizacje selektywne: znajdowanie tego, co wymaga poprawienia 141
  • Moduł numexpr: przyspieszanie i upraszczanie operacji wewnętrznych 143
  • Przestroga: weryfikowanie "optymalizacji" (biblioteka scipy) 146
  • Wnioski z optymalizacji macierzy 148
  • Narzędzie Pandas 150
    • Model wewnętrzny narzędzia Pandas 150
    • Zastosowanie funkcji dla wielu wierszy danych 152
    • Budowanie struktur DataFrame i szeregów z wyników częściowych, a nie przez łączenie 159
    • Zadanie może zostać zrealizowane na więcej niż jeden sposób (i być może szybszy) 160
    • Rada dotycząca efektywnego projektowania z wykorzystaniem narzędzia Pandas 161
  • Podsumowanie 163

7. Kompilowanie do postaci kodu C 165

  • Jakie wzrosty szybkości są możliwe? 166
  • Porównanie kompilatorów JIT i AOT 168
  • Dlaczego informacje o typie ułatwiają przyspieszenie działania kodu? 168
  • Użycie kompilatora kodu C 169
  • Analiza przykładu zbioru Julii 170
  • Cython 170
    • Kompilowanie czystego kodu Python za pomocą narzędzia Cython 171
  • pyximport 173
    • Użycie adnotacji kompilatora Cython do analizowania bloku kodu 173
    • Dodawanie adnotacji typu 175
  • Cython i numpy 179
    • Przetwarzanie równoległe rozwiązania na jednym komputerze z wykorzystaniem interfejsu OpenMP 181
  • Numba 183
    • Użycie narzędzia Numba do kompilacji kodu NumPy dla narzędzia Pandas 185
  • PyPy 186
    • Różnice związane z czyszczeniem pamięci 187
    • Uruchamianie interpretera PyPy i instalowanie modułów 188
  • Zestawienie wzrostów szybkości 189
  • Kiedy stosować poszczególne technologie? 190
    • Inne przyszłe projekty 192
  • Procesory graficzne (GPU) 193
    • Grafy dynamiczne: PyTorch 193
    • Podstawowe profilowanie procesora graficznego 196
    • Elementy wydajności procesorów graficznych 197
    • Kiedy stosować procesory graficzne? 199
  • Interfejsy funkcji zewnętrznych 201
    • ctypes 202
    • cffi 204
    • f2py 206
    • Moduł narzędzia CPython 209
  • Podsumowanie 212

8. Asynchroniczne operacje wejścia-wyjścia 215

  • Wprowadzenie do programowania asynchronicznego 217
  • Jak działają funkcja async i instrukcja await? 219
    • Przeszukiwacz szeregowy 220
    • gevent 222
    • tornado 226
    • aiohttp 229
  • Wspólne obciążenie procesora i urządzeń wejścia-wyjścia 232
    • Proces szeregowy 233
    • Przetwarzanie wsadowe wyników 234
    • Pełna asynchronizacja 237
  • Podsumowanie 240

9. Moduł multiprocessing 243

  • Moduł multiprocessing 246
  • Przybliżenie liczby pi przy użyciu metody Monte Carlo 248
  • Przybliżanie liczby pi za pomocą procesów i wątków 249
    • Zastosowanie obiektów języka Python 250
    • Zastępowanie modułu multiprocessing biblioteką Joblib 256
    • Liczby losowe w systemach przetwarzania równoległego 260
    • Zastosowanie narzędzia numpy 261
  • Znajdowanie liczb pierwszych 264
    • Kolejki zadań roboczych 270
  • Weryfikowanie liczb pierwszych za pomocą komunikacji międzyprocesowej 274
    • Rozwiązanie z przetwarzaniem szeregowym 279
    • Rozwiązanie z prostym obiektem Pool 280
    • Rozwiązanie z bardzo prostym obiektem Pool dla mniejszych liczb 281
    • Użycie obiektu Manager.Value jako flagi 282
    • Użycie systemu Redis jako flagi 284
    • Użycie obiektu RawValue jako flagi 286
    • Użycie modułu mmap jako flagi 287
    • Użycie modułu mmap do odtworzenia flagi 288
  • Współużytkowanie danych narzędzia numpy za pomocą modułu multiprocessing 290
  • Synchronizowanie dostępu do zmiennych i plików 297
    • Blokowanie plików 297
    • Blokowanie obiektu Value 300
  • Podsumowanie 303

10. Klastry i kolejki zadań 305

  • Zalety klastrowania 306
  • Wady klastrowania 307
    • Strata o wartości 462 milionów dolarów nagiełdzie Wall Street z powodu kiepskiej strategii aktualizacji klastra309
    • 24-godzinny przestój usługi Skype w skali globalnej 309
  • Typowe projekty klastrowe 310
  • Metoda rozpoczęcia tworzenia rozwiązania klastrowego 311
  • Sposoby na uniknięcie kłopotów podczas korzystania z klastrów 312
  • Dwa rozwiązania klastrowe 313
    • Użycie modułu IPython Parallel do obsługi badań 314
    • Operacje równoległe narzędzia Pandas z wykorzystaniem biblioteki Dask 316
  • Użycie systemu NSQ dla niezawodnych klastrów produkcyjnych 321
    • Kolejki 321
    • Publikator/subskrybent 322
    • Rozproszone obliczenia liczb pierwszych 324
  • Inne warte uwagi narzędzia klastrowania 328
  • Docker 329
    • Wydajność Dockera 329
    • Zalety Dockera 332
  • Podsumowanie 334

11. Mniejsze wykorzystanie pamięci RAM 335

  • Obiekty typów podstawowych są kosztowne 336
    • Moduł array zużywa mniej pamięci do przechowywania wielu obiektów typu podstawowego 337
    • Mniejsze zużycie pamięci RAM w bibliotece NumPy dzięki narzędziu NumExpr 340
  • Analiza wykorzystania pamięci RAM w kolekcji 343
  • Bajty i obiekty Unicode 345
  • Efektywne przechowywanie zbiorów tekstowych w pamięci RAM 346
    • Zastosowanie metod dla 11 milionów tokenów 347
  • Modelowanie większej ilości tekstu za pomocą narzędzia FeatureHasher biblioteki scikit-learn 355
  • Wprowadzenie do narzędzi DictVectorizer i FeatureHasher 356
    • Porównanie narzędzi DictVectorizer i FeatureHasher w wypadku rzeczywistego problemu 358
  • Macierze rzadkie biblioteki SciPy 360
  • Wskazówki dotyczące mniejszego wykorzystania pamięci RAM 363
  • Probabilistyczne struktury danych 363
    • Obliczenia o bardzo dużym stopniu przybliżenia z wykorzystaniem jednobajtowego licznika Morrisa 365
    • Wartości k-minimum 367
    • Filtry Blooma 371
    • Licznik LogLog 376
    • Praktyczny przykład 380

12. Rady specjalistów z branży 385

  • Usprawnianie potoków inżynierii cech za pomocą biblioteki Feature-engine 385
    • Inżynieria cech w przypadku uczenia maszynowego 386
    • Trudne zadanie wdrażania potoków inżynierii cech 386
    • Wykorzystanie możliwości bibliotek open source języka Python 387
    • Biblioteka Feature-engine usprawnia budowanie i wdrażanie potoków inżynierii cech 388
    • Ułatwienie adaptacji nowego pakietu open source 389
    • Projektowanie, utrzymywanie i zachęcanie do uczestnictwa w rozwoju bibliotek open source 390
  • Bardzo wydajne zespoły danologów 391
    • Ile to potrwa? 392
    • Poznawanie i planowanie 392
    • Zarządzanie oczekiwaniami i dostarczeniem produktu 393
  • Numba 395
    • Prosty przykład 395
    • Najlepsze praktyki i zalecenia 397
    • Uzyskiwanie pomocy 400
  • Optymalizowanie a myślenie 401
  • Narzędzie Social Media Analytics (SoMA) firmy Adaptive Lab (2014) 403
    • Język Python w firmie Adaptive Lab 404
    • Projekt narzędzia SoMA 404
    • Zastosowana metodologia projektowa 405
    • Serwisowanie systemu SoMA 405
    • Rada dla inżynierów z branży 406
  • Technika głębokiego uczenia prezentowana przez firmę RadimRehurek.com (2014) 406
    • Strzał w dziesiątkę 407
    • Rady dotyczące optymalizacji 409
    • Podsumowanie 411
  • Uczenie maszynowe o dużej skali gotowe do zastosowań produkcyjnych w firmie Lyst.com (2014) 412
    • Projekt klastra 412
    • Ewolucja kodu w szybko rozwijającej się nowej firmie 412
    • Budowanie mechanizmu rekomendacji 413
    • Raportowanie i monitorowanie 413
    • Rada 414
  • Analiza serwisu społecznościowego o dużej skali w firmie Smesh (2014) 414
    • Rola języka Python w firmie Smesh 414
    • Platforma 415
    • Dopasowywanie łańcuchów w czasie rzeczywistym z dużą wydajnością 415
    • Raportowanie, monitorowanie, debugowanie i wdrażanie 417
  • Interpreter PyPy zapewniający powodzenie systemów przetwarzania danych i systemów internetowych (2014) 418
    • Wymagania wstępne 419
    • Baza danych 419
    • Aplikacja internetowa 420
    • Mechanizm OCR i tłumaczenie 420
    • Dystrybucja zadań i procesy robocze 421
    • Podsumowanie 421
  • Kolejki zadań w serwisie internetowym Lanyrd.com (2014) 421
    • Rola języka Python w serwisie Lanyrd 422
    • Zapewnianie odpowiedniej wydajności kolejki zadań 423
    • Raportowanie, monitorowanie, debugowanie i wdrażanie 423
    • Rada dla programistów z branży 423
Kategoria: Programowanie
Zabezpieczenie: Watermark
Watermark
Watermarkowanie polega na znakowaniu plików wewnątrz treści, dzięki czemu możliwe jest rozpoznanie unikatowej licencji transakcyjnej Użytkownika. E-książki zabezpieczone watermarkiem można odczytywać na wszystkich urządzeniach odtwarzających wybrany format (czytniki, tablety, smartfony). Nie ma również ograniczeń liczby licencji oraz istnieje możliwość swobodnego przenoszenia plików między urządzeniami. Pliki z watermarkiem są kompatybilne z popularnymi programami do odczytywania ebooków, jak np. Calibre oraz aplikacjami na urządzenia mobilne na takie platformy jak iOS oraz Android.
ISBN: 978-83-283-7185-9
Rozmiar pliku: 10 MB

BESTSELLERY

Kategorie: