Indholdsfortegnelse
Som vi ved Python Det har mange biblioteker, der giver os mulighed for at arbejde og administrere forbindelser i netværk, uanset om vi opretter forbindelse til eksterne filer eller vores program fungerer som en server, i grundlæggende eksempler på brug af sockets med Python det er blevet set, at det håndteres meget let ved brug af modulet stikkontaktFor at det skal være en mere robust applikation, skal vi dog kunne håndtere flere forbindelser.Til håndtering af flere forbindelser i Python vi kan bruge Forking og fra Trådning, for at kunne generere asynkrone input- og outputprocesser, der giver os mulighed for at håndtere flere forbindelser på samme tid.
Gaffel og gevind
Hvis vi er i vores første trin med at lære at programmere, eller hvis vi kun har udført struktureret programmering, kan disse termer måske virke komplicerede til at være ukendte, men de er enkle begreber at forstå og fordøje, lad os se definitionerne, før vi går videre.
Forking: Det er et begreb, der bruges i miljøer UNIX og består af at lave en opdeling, med en proces duplikerer vi den, og så har vi to ens processer, men hver med sit omfang, den oprindelige proces er kendt som forælderprocessen, og den dublerede proces er kendt som barneprocessen, hvis vi laver en analogi med science fiction, kan vi se dem som parallelle universer, hvor de samme ting kun eksisterer, at de kan opføre sig forskelligt på de samme punkter.
Bagsiden af Forking er, at det kan være meget dyrt med hensyn til ressourcer, og det er derfor, vi har Trådning, a Tråd Det er en tråd, i dette tilfælde er trådene delprocesser, der tilhører den samme proces, og deler hukommelse og ressourcer, på denne måde sænker vi omkostningerne ved processorressourcerne, men ved at dele hukommelse finder vi det problem, vi skal være meget forsigtig med de elementer, hvortil Tråde for ikke at resultere i kompromitterede operationer.
Nu hvor vi kender teorien og de grundlæggende begreber, vil vi se nogle eksempler, som vi kan se applikationen i Python.
Som vi havde sagt i begyndelsen takket være det store antal moduler og biblioteker, der findes i Python, at lave programmer med netværksfunktioner er meget enkelt, så vi kan koncentrere os om logikken i stedet for de tekniske aspekter.
Lad os se på det følgende billede et eksempel på Forking, så vil vi forklare, hvad der sker med koden:
Den første ting, vi gør, er at importere de moduler, vi har brug for fra SocketServer, vigtigt at vi ser på er ForkingMixIn hvem der skal stå for administrationen af dobbeltarbejde med hver anmodning, så definerer vi klassen Server Y HandlerInden for Handler placerer vi en konstruktør, som er den, der vil styre, hvad der vil ske med de indgående forbindelser, i dette tilfælde vil det opnå klientens navn og lave et skærmprint af en meddelelse; Endelig instantiserer vi serverklassen, vi sender parametrene til den, først porten, hvor den vil acceptere forbindelser og derefter klassen Handler, endelig kalder vi metoden serve_forever at starte serveren, så den kan administrere klientanmodninger.
Da vi ser, at denne applikation er ganske enkel, lad os se, hvordan vi kan opnå noget lignende ved hjælp af Tråde, i følgende billede har vi et eksempel:
Vi kan indse, at det er næsten nøjagtig den samme kode ovenfor med den forskel, der i stedet for at bruge ForkingMixIn, vi bruger ThreadingMixInSå som vi kan se, er disse nøglebibliotekerne for denne adfærd, når der laves programmer, der accepterer flere forbindelser.Kan du lide og hjælpe denne vejledning?Du kan belønne forfatteren ved at trykke på denne knap for at give ham et positivt punkt