Python i Asyncio. Programowanie asynchroniczne - ebook
Python i Asyncio. Programowanie asynchroniczne - ebook
Programowanie współbieżne jest ważną techniką w tworzeniu nowoczesnych rozwiązań sieciowych. Programiści Pythona często w tym celu korzystają z wątków i mechanizmu wywłaszczania. Z tym że nie jest to optymalne rozwiązanie - z uwagi na ryzyko naruszenia bezpieczeństwa. Istnieje też możliwość programowania asynchronicznego z wykorzystaniem biblioteki asyncio, która została dodana w Pythonie 3.4. Złożoność API Asyncio budzi jednak obawy programistów Pythona, również biegle posługujących się tym językiem. Mimo to wysiłek włożony w zrozumienie działania Asyncio jest opłacalny, gdyż biblioteka ta pozwala na skuteczne rozwiązywanie problemów ze współbieżnym programowaniem sieciowym.
Lektura tej książki ułatwi Ci pozbycie się obaw przed biblioteką asyncio. Zrozumiesz jej podstawowe elementy, co pozwoli Ci na rozpoczęcie programowania sterowanego zdarzeniami i prostą obsługę tysięcy jednoczesnych połączeń sieciowych. Dowiesz się, dlaczego Asyncio stanowi bezpieczniejszą alternatywę dla wielozadaniowości z wywłaszczaniem wątków, i dogłębnie zrozumiesz koncepcję programowania asynchronicznego. Następnie przeanalizujesz wprowadzone w Pythonie zmiany, dzięki którym możliwe jest programowanie asynchroniczne. Dowiesz się także, w jakich konkretnie sytuacjach biblioteka asyncio jest wyjątkowo użyteczna i których narzędzi należy wtedy używać. W książce pokazano najlepsze sposoby wykorzystania nowych możliwości Asyncio.
W tej książce:
- porównanie programowania współbieżnego z wykorzystaniem Asyncio i wątków
- podstawy programowania bazującego na zdarzeniach
- możliwości Asyncio ważne dla programistów końcowych oraz twórców frameworków
- składnia async/await, w tym API koprocedur i klasy Future
- szczegółowe przypadki użycia kilku bibliotek zgodnych z Asyncio
Programowanie asynchroniczne: nowa wizja bezpieczeństwa kodu Pythona!
Spis treści
Wstęp 7
1. Prezentacja Asyncio 11
- Restauracja ThreadBotów 11
- Epilog 15
- Jakie problemy stara się rozwiązywać Asyncio? 16
2. Prawda o wątkach 19
- Zalety stosowania wątków 20
- Wady stosowania wątków 21
- Studium przypadku: roboty i sztućce 24
3. Asyncio - przegląd informacji 31
- Szybki start 32
- Wieża Asyncio 37
- Koprocedury 40
- Nowe słowa kluczowe async def 41
- Nowe słowo kluczowe await 43
- Pętla zdarzeń 46
- Klasy Task i Future 48
- Kilka słów o terminologii 51
- Asynchroniczne menedżery kontekstu: async with 54
- Zastosowanie modułu contextlib 55
- Iteratory asynchroniczne: async for 58
- Prostszy kod dzięki użyciu generatorów asynchronicznych 61
- Asynchroniczne wyrażenia listowe 62
- Rozpoczynanie i kończenie (łagodne!) 64
- Do czego służy argument return_exceptions=True funkcji gather()? 68
- Sygnały 70
- Oczekiwanie na egzekutor podczas procesu kończenia 74
4. 20 bibliotek Asyncio, których nie używasz (ale... mniejsza z tym) 81
- Strumienie (biblioteka standardowa) 82
- Studium przypadku: kolejka komunikatów 82
- Studium przypadku: poprawa kolejki komunikatów 89
- Framework Twisted 93
- Kolejka Janus 95
- aiohttp 97
- Studium przypadku: "Witaj, świecie!" 97
- Studium przypadku: mechanizm zbierania doniesień 97
- OMQ (ZeroMQ) 101
- Studium przypadku: obsługa wielu gniazd 102
- Studium przypadku: monitorowanie wydajności aplikacji 106
- asyncpg i Sanic 113
- Studium przypadku: unieważnienie pamięci podręcznej 117
- Inne biblioteki i zasoby 127
5. Przemyślenia końcowe 129
A. Krótka historia programowania asynchronicznego w języku Python 131
- Na początku było asyncore 131
- Ścieżka do rodzimych koprocedur 133
B. Materiały uzupełniające 135
- Przykład ze sztućcami z wykorzystaniem asyncio 135
- Materiały dodatkowe do przykładu z mechanizmem zbierania doniesień 137
- Materiały uzupełniające studium przypadku z ZeroMQ 138
- Obsługa wyzwalaczy bazy danych na potrzeby studium przypadku użycia bibliotek asyncpg 140
- Materiał uzupełniający do przykładu z frameworkiem Sanic: aelapsed i aprofiler 142
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-7004-3 |
Rozmiar pliku: | 3,7 MB |