Python - asynchronní procesy

Obsah
Než vstoupíme do světa vícenásobného zpracování, serverů a různých požadavků, musíme vědět, že existují různé typy odpovědí nebo chování, synchronní a asynchronní.
První spočívá v obsluze požadavku podle teorie front, fifo, lifo atd. To znamená, že dokud není proces dokončen, nepřejde k jinému, protože vidět toto chování, to by nebyl problém pro program, který zpracovává Vlákna protože to může generovat několik Vlákna pro každý požadavek, který slouží konkrétním funkcím.
Pak máme asynchronní, který nám pomáhá sloužit s stejné vlákno několik požadavků v závislosti na jejich stavu, takže pokud je provedeno několik požadavků, zatímco jeden něco zpracovává, můžeme se věnovat dalšímu, nebo bychom dokonce neměli ani čekat na požadavek na odeslání dat klientovi:

Jak vidíme na obrázku, simulace provozu chatu se provádí tam, kde se kontroluje, dokud nedojde k přenosu zprávy.
Asynchronní vstupní a výstupní procesy
Když provádíme asynchronní čtení požadavků klienta, není nutné, abychom zpočátku provedli úplné čtení zprávy, ale díky rychlosti zpracování ji můžeme vidět kousek po kousku.
Pro asynchronní práci v Krajta Máme dvě funkce, které nám mohou pomoci, jedna je vybrat a druhý je hlasování, z nichž druhý je k dispozici pouze pro prostředí UNIX„Mohlo by tedy být podmínkou, abychom stanovili limit, pokud chceme vytvořit multiplatformní program, nicméně je to řešení, které se nejlépe přizpůsobuje, takže musíme tyto detaily vzít v úvahu.
The vyberte funkci bere 3 sekvence jako požadované argumenty, přičemž čtvrtý argument je volitelný a obsahuje Časový limit V sekundách jsou sekvence připojení, na která budeme čekat, přičemž 3 odpovídají následujícímu: vstup, výstup, výjimečné podmínky (chyby, výjimky atd.).
Pokud neurčíme a Časový limit, funkce vybrat bude čekat, až bude jedna ze sekvencí připravena k akci, jinak pokud zadáme časový limit, bloky počkají na odpovídající čas. Hodnoty vrácené funkcí představují aktivní podmnožinu každé sekvence, například první vrácená sekvence bude vstupní sekvencí, kde budeme mít co číst.
Podívejme se na následující příklad kódu, jak implementovat server pomocí vyberte funkci:
 importujte zásuvku, vyberte s = socket.socket () host = socket.gethostname () port = 1234 s.bind ((host, port)) s.listen (5) vstupy = [s] zatímco True: [b] rs, ws, es = select.select (Inputs, [], []) [/ b] for r in rs: if r is s: c, addr = s.accept () print 'Got connection from', addr inputs.append (c) else: try: data = r.recv (1024) odpojeno = ne data kromě socket.error: disconnected = True if disconnected: print r.getpeername (), 'disconnected' inputs.remove (r) else: print data 

Jak vidíme, když zavoláme vyberte funkci předáním 3 povinných sekvencí předáme proměnnou vstupy, který je spojen s tím, co server zachycuje při poslechu na portu TCP 1234, poté iterujeme, abychom zobrazili informace.
Jak vidíme, tento aspekt implementace je celkem jednoduchý a limit bude dán naší kreativitou při tvorbě programu.Líbil se vám tento návod a pomohl mu?Autora můžete odměnit stisknutím tohoto tlačítka, čímž mu dáte kladný bod

Vám pomůže rozvoji místa, sdílet stránku s přáteli

wave wave wave wave wave