Categories
Ebooks
-
Business and economy
- Bitcoin
- Businesswoman
- Coaching
- Controlling
- E-business
- Economy
- Finances
- Stocks and investments
- Personal competence
- Computer in the office
- Communication and negotiation
- Small company
- Marketing
- Motivation
- Multimedia trainings
- Real estate
- Persuasion and NLP
- Taxes
- Social policy
- Guides
- Presentations
- Leadership
- Public Relation
- Reports, analyses
- Secret
- Social Media
- Sales
- Start-up
- Your career
- Management
- Project management
- Human Resources
-
For children
-
For youth
-
Education
-
Encyclopedias, dictionaries
-
E-press
- Architektura i wnętrza
- Biznes i Ekonomia
- Home and garden
- E-business
- Finances
- Personal finance
- Business
- Photography
- Computer science
- HR & Payroll
- Computers, Excel
- Accounts
- Culture and literature
- Scientific and academic
- Environmental protection
- Opinion-forming
- Education
- Taxes
- Travelling
- Psychology
- Religion
- Agriculture
- Book and press market
- Transport and Spedition
- Healthand beauty
-
History
-
Computer science
- Office applications
- Data bases
- Bioinformatics
- IT business
- CAD/CAM
- Digital Lifestyle
- DTP
- Electronics
- Digital photography
- Computer graphics
- Games
- Hacking
- Hardware
- IT w ekonomii
- Scientific software package
- School textbooks
- Computer basics
- Programming
- Mobile programming
- Internet servers
- Computer networks
- Start-up
- Operational systems
- Artificial intelligence
- Technology for children
- Webmastering
-
Other
-
Foreign languages
-
Culture and art
-
School reading books
-
Literature
- Antology
- Ballade
- Biographies and autobiographies
- For adults
- Dramas
- Diaries, memoirs, letters
- Epic, epopee
- Essay
- Fantasy and science fiction
- Feuilletons
- Work of fiction
- Humour and satire
- Other
- Classical
- Crime fiction
- Non-fiction
- Fiction
- Mity i legendy
- Nobelists
- Novellas
- Moral
- Okultyzm i magia
- Short stories
- Memoirs
- Travelling
- Narrative poetry
- Poetry
- Politics
- Popular science
- Novel
- Historical novel
- Prose
- Adventure
- Journalism, publicism
- Reportage novels
- Romans i literatura obyczajowa
- Sensational
- Thriller, Horror
- Interviews and memoirs
-
Natural sciences
-
Social sciences
-
School textbooks
-
Popular science and academic
- Archeology
- Bibliotekoznawstwo
- Cinema studies
- Philology
- Polish philology
- Philosophy
- Finanse i bankowość
- Geography
- Economy
- Trade. World economy
- History and archeology
- History of art and architecture
- Cultural studies
- Linguistics
- Literary studies
- Logistics
- Maths
- Medicine
- Humanities
- Pedagogy
- Educational aids
- Popular science
- Other
- Psychology
- Sociology
- Theatre studies
- Theology
- Economic theories and teachings
- Transport i spedycja
- Physical education
- Zarządzanie i marketing
-
Guides
-
Game guides
-
Professional and specialist guides
-
Law
- Health and Safety
- History
- Road Code. Driving license
- Law studies
- Healthcare
- General. Compendium of knowledge
- Academic textbooks
- Other
- Construction and local law
- Civil law
- Financial law
- Economic law
- Economic and trade law
- Criminal law
- Criminal law. Criminal offenses. Criminology
- International law
- International law
- Health care law
- Educational law
- Tax law
- Labor and social security law
- Public, constitutional and administrative law
- Family and Guardianship Code
- agricultural law
- Social law, labour law
- European Union law
- Industry
- Agricultural and environmental
- Dictionaries and encyclopedia
- Public procurement
- Management
-
Tourist guides and travel
- Africa
- Albums
- Southern America
- North and Central America
- Australia, New Zealand, Oceania
- Austria
- Asia
- Balkans
- Middle East
- Bulgary
- China
- Croatia
- The Czech Republic
- Denmark
- Egipt
- Estonia
- Europe
- France
- Mountains
- Greece
- Spain
- Holand
- Iceland
- Lithuania
- Latvia
- Mapy, Plany miast, Atlasy
- Mini travel guides
- Germany
- Norway
- Active travelling
- Poland
- Portugal
- Other
- Russia
- Romania
- Slovakia
- Slovenia
- Switzerland
- Sweden
- World
- Turkey
- Ukraine
- Hungary
- Great Britain
- Italy
-
Psychology
- Philosophy of life
- Kompetencje psychospołeczne
- Interpersonal communication
- Mindfulness
- General
- Persuasion and NLP
- Academic psychology
- Psychology of soul and mind
- Work psychology
- Relacje i związki
- Parenting and children psychology
- Problem solving
- Intellectual growth
- Secret
- Sexapeal
- Seduction
- Appearance and image
- Philosophy of life
-
Religion
-
Sport, fitness, diets
-
Technology and mechanics
Audiobooks
-
Business and economy
- Bitcoin
- Businesswoman
- Coaching
- Controlling
- E-business
- Economy
- Finances
- Stocks and investments
- Personal competence
- Communication and negotiation
- Small company
- Marketing
- Motivation
- Real estate
- Persuasion and NLP
- Taxes
- Guides
- Presentations
- Leadership
- Public Relation
- Secret
- Social Media
- Sales
- Start-up
- Your career
- Management
- Project management
- Human Resources
-
For children
-
For youth
-
Education
-
Encyclopedias, dictionaries
-
History
-
Computer science
-
Other
-
Foreign languages
-
Culture and art
-
School reading books
-
Literature
- Antology
- Ballade
- Biographies and autobiographies
- For adults
- Dramas
- Diaries, memoirs, letters
- Epic, epopee
- Essay
- Fantasy and science fiction
- Feuilletons
- Work of fiction
- Humour and satire
- Other
- Classical
- Crime fiction
- Non-fiction
- Fiction
- Mity i legendy
- Nobelists
- Novellas
- Moral
- Okultyzm i magia
- Short stories
- Memoirs
- Travelling
- Poetry
- Politics
- Popular science
- Novel
- Historical novel
- Prose
- Adventure
- Journalism, publicism
- Reportage novels
- Romans i literatura obyczajowa
- Sensational
- Thriller, Horror
- Interviews and memoirs
-
Natural sciences
-
Social sciences
-
Popular science and academic
-
Guides
-
Professional and specialist guides
-
Law
-
Tourist guides and travel
-
Psychology
- Philosophy of life
- Interpersonal communication
- Mindfulness
- General
- Persuasion and NLP
- Academic psychology
- Psychology of soul and mind
- Work psychology
- Relacje i związki
- Parenting and children psychology
- Problem solving
- Intellectual growth
- Secret
- Sexapeal
- Seduction
- Appearance and image
- Philosophy of life
-
Religion
-
Sport, fitness, diets
-
Technology and mechanics
Videocourses
-
Data bases
-
Big Data
-
Biznes, ekonomia i marketing
-
Cybersecurity
-
Data Science
-
DevOps
-
For children
-
Electronics
-
Graphics/Video/CAX
-
Games
-
Microsoft Office
-
Development tools
-
Programming
-
Personal growth
-
Computer networks
-
Operational systems
-
Software testing
-
Mobile devices
-
UX/UI
-
Web development
-
Management
Podcasts
- Ebooks
- Programming
- Inne - Programming
- Wysoko wydajny Python. Efektywne programowanie w praktyce. Wydanie II
E-book details
Wysoko wydajny Python. Efektywne programowanie w praktyce. Wydanie II
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ść!
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 na giełdzie Wall Street z powodu kiepskiej strategii aktualizacji klastra 309
- 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
- Title: Wysoko wydajny Python. Efektywne programowanie w praktyce. Wydanie II
- Author: Micha Gorelick, Ian Ozsvald
- Original title: High Performance Python: Practical Performant Programming for Humans, 2nd Edition
- Translation: Piotr Pilch
- ISBN: 978-83-283-7185-9, 9788328371859
- Date of issue: 2021-01-21
- Format: Ebook
- Item ID: pytps2
- Publisher: Helion