Zgjidhet: harta shumëpërpunuese

Multiprocessing është një teknikë popullore në programimin Python që ju lejon të ekzekutoni procese të shumta njëkohësisht, duke rezultuar shpesh në përmirësime të performancës dhe përdorim më efikas të burimeve të sistemit. Ky artikull zhytet në përdorimin e multiprocesimi bibliotekë në Python, duke u fokusuar veçanërisht në hartë funksionin. Funksioni i hartës ju lejon të aplikoni një funksion për çdo artikull në një përsëritës, të tillë si një listë, dhe të ktheni një listë të re me rezultatet. Duke përdorur shumë përpunim, ne mund ta paralelizojmë këtë proces për efikasitet dhe shkallëzim më të madh.

Në këtë artikull, ne do të shqyrtojmë problemin për të cilin përpunimi i shumëfishtë me funksionin e hartës mund të jetë një zgjidhje e shkëlqyeshme, do të diskutojmë bibliotekat dhe funksionet përkatëse, do të ofrojmë një shpjegim hap pas hapi të kodit dhe do të gërmojmë në tema të lidhura që ndërtohen në shtyllën kurrizore të shumëpërpunimit dhe funksionit të hartës.

Harta e shumëpërpunimit: Problemi dhe zgjidhja

Problemi që synojmë të zgjidhim është të përmirësojmë performancën dhe efikasitetin e aplikimit të një funksioni për çdo artikull në një iterable të madh, të tillë si një listë, tuple ose çdo objekt tjetër që mbështet përsëritjen. Kur përballeni me detyra të tilla, përdorimi i funksionit të integruar të hartës ose kuptimi i listës mund të jetë mjaft i ngadaltë dhe joefikas.

Zgjidhja është të përdorni bibliotekën e shumëpërpunimit në Python, veçanërisht, në pishinë klasa dhe e saj hartë metodë. Duke përdorur funksioni i shumëpërpunimit Pool.map()., ne mund ta shpërndajmë ekzekutimin e funksionit tonë nëpër procese të shumta.

Shpjegimi hap pas hapi i kodit

Le të zbërthejmë kodin dhe të ilustrojmë se si të përdorim në mënyrë efektive funksionin e hartës së shumëpërpunimit:

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. Së pari, importoni multiprocesimi modul, i cili përmban mjetet e nevojshme për të përdorur përpunimin paralel në Python.
  2. Krijo një funksion të quajtur katror që thjesht fle për gjysmë sekonde dhe më pas kthen katrorin e argumentit të tij hyrës. Ky funksion simulon një llogaritje që kërkon një kohë të arsyeshme për të përfunduar.
  3. Krijo një listë të quajtur Numrat, i cili përmban numra të plotë nga 0 në 9 (përfshirë).
  4. Inicialet a pishinë objekt nga moduli multiprocessing. Objekti Pool shërben si një mjet për të menaxhuar proceset e punës që do të përdorni për të paralelizuar detyrat tuaja.
  5. Telefononi hartë metodë në objektin pishinë, dhe të kalojë në katror funksioni dhe Numrat listë. Metoda e hartës më pas aplikon funksionin katror për çdo artikull në listën e numrave njëkohësisht, duke përdorur proceset e disponueshme të punonjësve në grup.
  6. Shtypni listën rezultuese të numrave në katror, ​​e cila duhet të përmbajë vlerat në katror nga lista e numrave.

Biblioteka e shumëpërpunimit Python

Python multiprocesimi biblioteka ofron një mjet intuitiv për zbatimin e paralelizmit në programin tuaj. Ai maskon disa nga kompleksiteti i lidhur zakonisht me programimin paralel duke ofruar abstraksione të nivelit të lartë si p.sh. pishinë. Klasa Pool thjeshton shpërndarjen e punës nëpër procese të shumta, duke i mundësuar përdoruesit të përjetojë përfitimet e përpunimit paralel me vështirësi minimale.

Moduli Python Itertools dhe funksionet e lidhura me to

Ndërsa multiprocessing është një zgjidhje e shkëlqyer për shumë detyra paralele, vlen të përmendet se Python gjithashtu ofron biblioteka dhe mjete të tjera që plotësojnë nevoja të ngjashme. Moduli itertools, për shembull, ofron një mori funksionesh që funksionojnë në përsëritës, shpesh me efikasitet të përmirësuar. Disa itertools funksionojnë si imap () imap_unordered() mund të paralelizojë procesin e aplikimit të një funksioni në një iterable. Megjithatë, është e rëndësishme të theksohet se itertools fokusohet kryesisht në zgjidhjet e bazuara në përsëritës, ndërsa biblioteka e shumëpërpunimit ofron një qasje më gjithëpërfshirëse ndaj paralelizmit, duke ofruar mjete dhe aftësi shtesë përtej funksioneve të ngjashme me hartën.

Mesazhe të ngjashme:

Lini një koment