Išspręsta: kelių apdorojimo žemėlapis

Daugiafunkcis apdorojimas yra populiari Python programavimo technika, leidžianti vienu metu paleisti kelis procesus, todėl dažnai pagerėja našumas ir efektyviau naudojami sistemos ištekliai. Šiame straipsnyje kalbama apie naudojimą daugiafunkcinis apdorojimas biblioteka Python, ypač sutelkiant dėmesį į žemėlapis funkcija. Žemėlapio funkcija leidžia taikyti funkciją kiekvienam iteruojamo elemento elementui, pvz., sąrašui, ir grąžinti naują sąrašą su rezultatais. Naudodami kelių apdorojimo funkciją, galime lygiagretinti šį procesą, kad padidintume efektyvumą ir mastelį.

Šiame straipsnyje mes išnagrinėsime problemą, kuriai puikus sprendimas gali būti kelių apdorojimas naudojant žemėlapio funkciją, aptarsime atitinkamas bibliotekas ir funkcijas, pateiksime nuoseklų kodo paaiškinimą ir gilinsimės į susijusias temas, kurios remiasi pagrindu. kelių apdorojimo ir žemėlapio funkcijos.

Daugiafunkcinis žemėlapis: problema ir sprendimas

Problema, kurią siekiame išspręsti, yra pagerinti funkcijos taikymo kiekvienam didelės kartojimo elementui, pvz., sąrašui, kortelei ar bet kuriam kitam iteraciją palaikančiam objektui, našumą ir efektyvumą. Susidūrus su tokiomis užduotimis, naudojant integruotą žemėlapio funkciją ar sąrašo supratimą, gali būti gana lėtas ir neefektyvus.

Sprendimas yra naudoti Python daugiafunkcinę biblioteką, konkrečiai, Baseinas klasė ir jos žemėlapis metodas. Naudodami multiprocessing Pool.map() funkcija, galime paskirstyti savo funkcijos vykdymą keliems procesams.

Žingsnis po žingsnio Kodekso paaiškinimas

Išskaidykime kodą ir parodykime, kaip efektyviai naudoti kelių apdorojimo žemėlapio funkciją:

import multiprocessing
import time

def square(n):
    time.sleep(0.5)
    return n * n

# Create the list of numbers
numbers = list(range(10))

# Initialize the multiprocessing Pool
pool = multiprocessing.Pool()

# Use the map function with multiple processes
squared_numbers = pool.map(square, numbers)

print(squared_numbers)
  1. Pirma, importuokite daugiafunkcinis apdorojimas modulis, kuriame yra įrankiai, reikalingi lygiagrečiam apdorojimui Python.
  2. Sukurkite funkciją, vadinamą aikštė kuris tiesiog užmiega pusę sekundės ir tada grąžina įvesties argumento kvadratą. Ši funkcija imituoja skaičiavimą, kuriam atlikti reikia pakankamai laiko.
  3. Sukurkite sąrašą pavadinimu numeriai, kuriame yra sveikieji skaičiai nuo 0 iki 9 (imtinai).
  4. Inicijuoti a Baseinas objektą iš kelių apdorojimo modulio. „Pool“ objektas yra priemonė valdyti darbuotojų procesus, kuriuos naudosite užduotims lygiagretinti.
  5. Paskambinkite žemėlapis metodą baseino objekte ir perduoti aikštė funkcija ir numeriai sąrašą. Tada žemėlapio metodas taiko kvadratinę funkciją kiekvienam skaičių sąrašo elementui vienu metu, naudodamas galimus darbuotojų procesus telkinyje.
  6. Išspausdinkite gautą kvadratinių_skaičių sąrašą, kuriame turėtų būti kvadratinės reikšmės iš skaičių sąrašo.

Python kelių apdorojimo biblioteka

Python daugiafunkcinis apdorojimas biblioteka suteikia intuityvią priemonę lygiagretumui įgyvendinti jūsų programoje. Jis užmaskuoja tam tikrą sudėtingumą, paprastai susijusį su lygiagrečiu programavimu, siūlydamas aukšto lygio abstrakcijas, pvz., Baseinas. „Pool“ klasė supaprastina darbo paskirstymą keliuose procesuose, todėl vartotojas gali patirti lygiagretaus apdorojimo privalumus su minimaliu vargo.

Python Itertools modulis ir susijusios funkcijos

Nors kelių apdorojimas yra puikus sprendimas daugeliui lygiagrečių užduočių, verta paminėti, kad Python taip pat teikia kitas bibliotekas ir įrankius, kurie patenkina panašius poreikius. Pavyzdžiui, iterto įrankių modulis siūlo daugybę funkcijų, kurios veikia iterables, dažnai su didesniu efektyvumu. Kai kurie iterto įrankiai veikia kaip imap () ir imap_unordered() gali lygiagretinti funkcijos taikymo iteruojamai procesui procesą. Tačiau svarbu pažymėti, kad itertools daugiausia dėmesio skiria iteratoriumi pagrįstiems sprendimams, o kelių apdorojimo biblioteka siūlo išsamesnį požiūrį į lygiagretumą, suteikdama papildomų įrankių ir galimybių, be į žemėlapius panašių funkcijų.

Susijusios naujienos:

Palikite komentarą