Inhoudsopgave
Zoals we weten Python Het heeft veel bibliotheken waarmee we verbindingen in netwerken kunnen werken en beheren, of we nu verbinding maken met externe bestanden of ons programma als server dient, in basisvoorbeelden van het gebruik van sockets met Python het is gebleken dat het heel gemakkelijk wordt afgehandeld met het gebruik van de module stopcontactOm echter een robuustere toepassing te zijn, moeten we meerdere verbindingen kunnen verwerken.Voor het afhandelen van meerdere verbindingen in Python we kunnen de gebruiken vorken en van Inrijgen, om asynchrone invoer- en uitvoerprocessen te kunnen genereren waarmee we meerdere verbindingen tegelijkertijd kunnen verzorgen.
Vorken en draadsnijden
Als we ons in de eerste stappen van het leren programmeren bevinden of als we alleen gestructureerd programmeren hebben gedaan, lijken deze termen misschien ingewikkeld om onbekend te zijn, maar het zijn eenvoudige concepten om te begrijpen en te verwerken. Laten we de definities eens bekijken voordat we verder gaan.
vorken: Het is een term die wordt gebruikt in omgevingen UNIX en bestaat uit het maken van een splitsing, met een proces dupliceren we het en dan hebben we twee gelijke processen, maar elk met zijn reikwijdte, het oorspronkelijke proces staat bekend als het bovenliggende proces en het gedupliceerde proces staat bekend als het kindproces, als we een analogie met de sciencefiction, we kunnen ze zien als parallelle universums, waar dezelfde dingen bestaan, alleen dat ze zich op dezelfde punten anders kunnen gedragen.
Het nadeel van vorken is dat het erg duur kan zijn in termen van middelen en daarom hebben we de Inrijgen, een Draad Het is een thread, in dit geval zijn de threads subprocessen die tot hetzelfde proces behoren, geheugen en bronnen delen, op deze manier verlagen we de kosten van de processorbronnen, maar door geheugen te delen, vinden we het probleem dat we moeten zijn heel voorzichtig met de elementen waaraan de Draden om niet te resulteren in gecompromitteerde operaties.
Nu we de theorie en de basisconcepten kennen, gaan we enkele voorbeelden zien waarmee we de toepassing in kunnen zien Python.
Zoals we in het begin hadden gezegd, dankzij het grote aantal modules en bibliotheken in Python, het maken van programma's met netwerkfunctionaliteit is heel eenvoudig, dus we kunnen ons concentreren op de logica in plaats van op de technische aspecten.
Laten we in de volgende afbeelding een voorbeeld zien van: vorken, dan zullen we uitleggen wat er met de code gebeurt:
Het eerste wat we doen is de modules importeren die we nodig hebben van SocketServer, belangrijk waar we naar kijken is VorkenMixIn wie verantwoordelijk is voor het beheren van de duplicatie van de processen bij elk verzoek, dan definiëren we de klasse Server Y HandlerBinnen Handler plaatsen we een constructor, die zal beheren wat er gebeurt met de inkomende verbindingen, in dit geval zal hij de naam van de klant verkrijgen en een schermafdruk maken van een bericht; Ten slotte instantiëren we de Server-klasse, we geven de parameters eraan door, eerst de poort waar het verbindingen zal accepteren en dan de klasse Handler, tenslotte noemen we de methode serve_forever om de server te starten zodat deze clientverzoeken kan beheren.
Zoals we zien is deze applicatie vrij eenvoudig, laten we eens kijken hoe we iets soortgelijks kunnen bereiken met behulp van Draden, in de volgende afbeelding hebben we een voorbeeld:
We kunnen ons realiseren dat het bijna exact dezelfde code hierboven is, met het verschil dat in plaats van VorkenMixIn, we gebruiken ThreadingMixInDus, zoals we kunnen zien, zijn dit de belangrijkste bibliotheken voor dit gedrag bij het maken van programma's die meerdere verbindingen accepteren.Vond je deze tutorial leuk en hielp je hem?Je kunt de auteur belonen door op deze knop te drukken om hem een positief punt te geven