Python_Programuj_szybko_i_wydajnie_pytpsw.pdf

(1381 KB) Pobierz
Tytuł oryginału: High Performance Python: Practical Performant Programming for Humans
Tłumaczenie: Piotr Pilch
ISBN: 978-83-283-0466-6
© 2015 Helion S.A.
Authorized Polish translation of the English edition of High Performance Python, ISBN 9781449361594 ©
2014 Micha Gorelick and Ian Ozsvald.
This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all
rights to publish and sell the same.
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording or by any information storage retrieval system,
without permission from the Publisher.
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną,
fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje
naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich
właścicieli.
Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były
kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane
z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie
ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji
zawartych w książce.
Wydawnictwo HELION
ul. Kościuszki 1c, 44-100 GLIWICE
tel. 32 231 22 19, 32 230 98 63
e-mail:
helion@helion.pl
WWW:
http://helion.pl
(księgarnia internetowa, katalog książek)
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie/pytpsw
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Printed in Poland.
Kup książkę
Poleć książkę
Oceń książkę
Księgarnia internetowa
Lubię to! » Nasza społeczność
Spis tre ci
Przedmowa ....................................................................................................................9
1. Wydajny kod Python ................................................................................................... 15
Podstawowy system komputerowy ................................................................................................ 15
Jednostki obliczeniowe ................................................................................................................16
Jednostki pami ci .........................................................................................................................19
Warstwy komunikacji ..................................................................................................................21
czenie ze sob podstawowych elementów ................................................................................ 22
Porównanie wyidealizowanego przetwarzania z maszyn wirtualn j zyka Python ............23
Dlaczego warto u ywa j zyka Python? ........................................................................................ 26
2. U ycie profilowania do znajdowania w skich garde ...............................................29
Efektywne profilowanie .................................................................................................................... 30
Wprowadzenie do zbioru Julii ......................................................................................................... 31
Obliczanie pe nego zbioru Julii ........................................................................................................ 34
Proste metody pomiaru czasu — instrukcja print i dekorator ................................................... 37
Prosty pomiar czasu za pomoc polecenia time systemu Unix ................................................. 40
U ycie modu u cProfile ..................................................................................................................... 41
U ycie narz dzia runsnake do wizualizacji danych wyj ciowych modu u cProfile ............. 46
U ycie narz dzia line_profiler do pomiarów dotycz cych kolejnych wierszy kodu ............ 46
U ycie narz dzia memory_profiler do diagnozowania wykorzystania pami ci ................... 51
Inspekcja obiektów w stercie za pomoc narz dzia heapy ........................................................ 56
U ycie narz dzia dowser do generowania aktywnego wykresu
dla zmiennych z utworzonymi instancjami ................................................................................ 58
U ycie modu u dis do sprawdzania kodu bajtowego narz dzia CPython ............................. 60
Ró ne metody, ró na z o ono ................................................................................................62
Testowanie jednostkowe podczas optymalizacji w celu zachowania poprawno ci .............. 64
Dekorator @profile bez operacji ................................................................................................64
Strategie udanego profilowania kodu ............................................................................................ 66
Podsumowanie .................................................................................................................................... 67
3
Kup książkę
Poleć książkę
3. Listy i krotki ..................................................................................................................69
Bardziej efektywne wyszukiwanie .................................................................................................. 71
Porównanie list i krotek .................................................................................................................... 73
Listy jako tablice dynamiczne .......................................................................................................... 74
Krotki w roli tablic statycznych ....................................................................................................... 77
Podsumowanie .................................................................................................................................... 78
4. S owniki i zbiory .......................................................................................................... 79
Jak dzia aj s owniki i zbiory? .......................................................................................................... 82
Wstawianie i pobieranie ..............................................................................................................82
Usuwanie .......................................................................................................................................85
Zmiana wielko ci .........................................................................................................................85
Funkcje mieszania i entropia ......................................................................................................86
S owniki i przestrzenie nazw ........................................................................................................... 89
Podsumowanie .................................................................................................................................... 92
5. Iteratory i generatory ..................................................................................................93
Iteratory dla szeregów niesko czonych ......................................................................................... 96
Warto ciowanie leniwe generatora ................................................................................................. 97
Podsumowanie .................................................................................................................................. 101
6. Obliczenia macierzowe i wektorowe ....................................................................... 103
Wprowadzenie do problemu ......................................................................................................... 104
Czy listy j zyka Python s wystarczaj co dobre? ....................................................................... 107
Problemy z przesadn alokacj ...............................................................................................109
Fragmentacja pami ci ...................................................................................................................... 111
Narz dzie perf ............................................................................................................................113
Podejmowanie decyzji z wykorzystaniem danych wyj ciowych narz dzia perf ..........115
Wprowadzenie do narz dzia numpy .....................................................................................116
Zastosowanie narz dzia numpy w przypadku problemu dotycz cego dyfuzji .................. 119
Przydzia y pami ci i operacje wewn trzne ...........................................................................121
Optymalizacje selektywne: znajdowanie tego, co wymaga poprawienia .......................124
Modu numexpr: przyspieszanie i upraszczanie operacji wewn trznych ............................. 127
Przestroga: weryfikowanie „optymalizacji” (biblioteka scipy) ................................................ 129
Podsumowanie .................................................................................................................................. 131
7. Kompilowanie do postaci kodu C .............................................................................. 133
Jakie wzrosty szybko ci s mo liwe? ........................................................................................... 134
Porównanie kompilatorów JIT i AOT ........................................................................................... 136
Dlaczego informacje o typie u atwiaj przyspieszenie dzia ania kodu? ................................ 136
U ycie kompilatora kodu C ............................................................................................................ 137
Analiza przyk adu zbioru Julii ....................................................................................................... 138
Cython ................................................................................................................................................ 139
Kompilowanie czystego kodu Python za pomoc narz dzia Cython ..............................139
U ycie adnotacji kompilatora Cython do analizowania bloku kodu ...............................141
Dodawanie adnotacji typu .......................................................................................................143
4
Spis tre ci
Kup książkę
Poleć książkę
Shed Skin ............................................................................................................................................ 147
Tworzenie modu u rozszerzenia .............................................................................................148
Koszt zwi zany z kopiami pami ci ........................................................................................150
Cython i numpy ................................................................................................................................ 151
Przetwarzanie równoleg e rozwi zania na jednym komputerze
z wykorzystaniem interfejsu OpenMP ................................................................................152
Numba ................................................................................................................................................ 154
Pythran ............................................................................................................................................... 155
PyPy .................................................................................................................................................... 157
Ró nice zwi zane z czyszczeniem pami ci ...........................................................................158
Uruchamianie interpretera PyPy i instalowanie modu ów ................................................159
Kiedy stosowa poszczególne technologie? ................................................................................ 160
Inne przysz e projekty ...............................................................................................................162
Uwaga dotycz ca uk adów GPU ............................................................................................162
Oczekiwania dotycz ce przysz ego projektu kompilatora .................................................163
Interfejsy funkcji zewn trznych ..................................................................................................... 163
ctypes ............................................................................................................................................164
cffi ..................................................................................................................................................166
f2py ...............................................................................................................................................169
Modu narz dzia CPython .......................................................................................................171
Podsumowanie .................................................................................................................................. 174
8. Wspó bie no
............................................................................................................175
Wprowadzenie do programowania asynchronicznego ............................................................. 176
Przeszukiwacz szeregowy .............................................................................................................. 179
gevent .................................................................................................................................................. 181
tornado ............................................................................................................................................... 185
AsyncIO .............................................................................................................................................. 188
Przyk ad z baz danych .................................................................................................................. 190
Podsumowanie .................................................................................................................................. 193
9. Modu multiprocessing .............................................................................................. 195
Modu multiprocessing ................................................................................................................... 198
Przybli enie liczby pi przy u yciu metody Monte Carlo ......................................................... 200
Przybli anie liczby pi za pomoc procesów i w tków .............................................................. 201
Zastosowanie obiektów j zyka Python ..................................................................................201
Liczby losowe w systemach przetwarzania równoleg ego ................................................208
Zastosowanie narz dzia numpy .............................................................................................209
Znajdowanie liczb pierwszych ....................................................................................................... 211
Kolejki zada roboczych ...........................................................................................................217
Weryfikowanie liczb pierwszych za pomoc komunikacji mi dzyprocesowej .................... 221
Rozwi zanie z przetwarzaniem szeregowym ......................................................................225
Rozwi zanie z prostym obiektem Pool ..................................................................................225
Rozwi zanie z bardzo prostym obiektem Pool dla mniejszych liczb ..............................227
U ycie obiektu Manager.Value jako flagi ..............................................................................228
Spis tre ci
5
Kup książkę
Poleć książkę
Zgłoś jeśli naruszono regulamin