Ako najlepšie implementovať multiprocesing v Pythone?



Tento článok vás oboznámi s multiprocesorom v Pythone a nakoniec vám tiež ponúkneme programovú ukážku.

Rok 2019 bol veľmi veľkým rokom technologického rozvoja na celom svete. Počnúc tým, ako výrobcovia počítačov pridali do svojich CPU a procesorov viac jadier k zavedeniu inteligentnejších čipov v mobilných telefónoch, multiprocesing už nie je snom. Dnes je jedným z najvýznamnejších programovacích jazykov, ktorý podporuje multiprocesing . Vďaka zavedeniu paralelného výpočtového výkonu vo svojom vydaní môžu programátori po celom svete teraz bez problémov vytvárať kódy, ktoré sa majú vykonávať súčasne, a teda ich doba chodu je značná.

V tomto článku sa budeme zaoberať nasledujúcimi ukazovateľmi,





môže byť konštruktér súkromný

Začnime,

Multiprocesing v Pythone

Čo je to multiprocesing?

Multiprocesing možno jednoducho definovať ako schopnosť systému podporovať v danom prípade viac ako jednu operáciu. To znamená, že aplikácie v systémoch s viacerými procesmi sú rozdelené na malé kúsky a potom bežia nezávisle na sebe, aby sa zvýšila efektivita a znížila celková doba chodu. Procesor v systéme prideľuje každému malému kúsku samostatné samostatné vlákno, čo mu umožňuje fungovať ako samostatná entita.



Potreba multiprocesingu

Predstavte si počítačový systém, ktorý má v procesore iba jedno jadro. Ak je k tomuto jedinému jadru priradených viac úloh, rozdelí každú úlohu medzi seba a potom prepne na ďalšiu. Nezvýši sa to čas, ktorý je potrebný na dokončenie každej úlohy, ale tiež sa zníži celková efektívnosť systému.

Na druhej strane viacprocesorový počítač môže mať jeden procesor, ktorý má zase v sebe viac funkčných jednotiek, nazývaných jednotlivé jadrá, ktoré majú schopnosť nezávisle prevádzať niekoľko rôznych úloh súčasne. To zvyšuje nielen efektivitu systému, ale z dlhodobého hľadiska významne znižuje aj dobu chodu systému.



Systém s viacerými procesmi v Pythone môže byť dvoch typov.

Systém viacerých procesorov

Tento systém má v podstate pod kapotou niekoľko procesorov, z ktorých každý môže vykonávať jednu úlohu naraz a fungovať ako nezávislý komponent.

Viacjadrový systém procesorov

Tento systém má v rovnakom procesore viac jadier, v ktorých jadro funguje ako samostatná jednotka a nezávisle plní úlohy, ktoré sú mu pridelené.

Kód na viacprocesové spracovanie v Pythone

Teraz, keď ste si zvykli na základný koncept multiprocesingu, poďme preskúmať, ako je možné v Pythone dosiahnuť multiprocesing.

V Pythone obsahuje tlmočník veľmi jednoduché a intuitívne API, ktoré prevezme jednu úlohu, rozdelí ju na viac komponentov a nechá ich samostatne spracovať.

Zoznámte sa s programovým modulom nižšie, aby ste lepšie pochopili tento koncept multiprocesingu v pythone.

Príklad 1

# import modulu s viacerými procesmi import multiprocesingu def print_cube (num): '' 'funkcia na tlač kocky daného počtu' 'print (' Cube: {} '. format (num * num * num)) def print_square (num): '' 'funkcia na tlač štvorca daného čísla' 'print (' štvorec: {} '. formát (num * num)) ak __name__ ==' __main__ ': # vytváranie procesov p1 = multiprocesing.Process (target = print_square, args = (10,)) p2 = multiprocesing. Proces (target = print_cube, args = (10,)) # spustenie procesu 1 p1.start () # spustenie procesu 2 p2.start () # počkajte, kým sa proces 1 nedokončí p1 .join () # čakať, kým sa proces 2 nedokončí p2.join () # oba procesy dokončili tlač ('Hotovo!')

Výkon

Štvorec: 100

Kocka: 1000

Hotový!

Teraz analyzujme tento program, aby sme mu lepšie porozumeli.

  1. Prvým krokom je import viacprocesného modulu. Na tento účel použite nasledujúcu syntax: import multiprocesing.

  2. Teraz, keď bol importovaný modul s viacerými procesmi, poďme ďalej a vytvorme proces. Aby sme to dosiahli, vytvoríme objekt triedy Process a priradíme mu nasledujúce argumenty. Cieľ: funkcia, ktorú je potrebné vykonať týmto procesom, a argumenty: argumenty, ktoré je potrebné odovzdať cieľovej funkcii.

Poznámka: Konštruktor procesu má schopnosť prevziať viac cieľov aj argumentov, ale vo vyššie uvedenom príklade sme nášmu procesu priradili iba dva ciele a argumenty, ako je uvedené nižšie.

p1 = multiprocesing.Process (target = print_square, args = (10,))

p2 = multiprocesing.Process (target = print_cube, args = (10,))

  1. Teraz, keď je proces vytvorený, napíšme syntax pre jeho začatie.

    java rozdiel medzi rozširuje a implementuje

p1.start ()

p2.start ()

Po spustení procesu sa súčasný program a už vykonávajúci program spúšťajú súčasne. Ak v určitej situácii potrebujete zastaviť vykonávanie aktuálneho programu a zamerať sa iba na vykonávanie už existujúceho, využijeme funkciu join, ako je uvedené nižšie.

p1.join ()

p2.join ()

Po zadaní tejto syntaxe bude tlmočník čakať na dokončenie programu p1 a potom prejde na program p2.

Ak chcete tejto koncepcii porozumieť ďalej, nižšie sa pozrite na ďalší príklad Multiprocesingu v Pythone.

Príklad 2

# import modulu s viacerými procesmi import multiprocesing import os def worker1 (): # ID procesu tlače print ('ID spusteného procesu worker1: {}'. format (os.getpid ())) def worker2 (): # proces tlače id print ('ID procesu so spusteným pracovníkom2: {}'. Format (os.getpid ())) if __name__ == '__main__': # print main program process id print ('ID of main process: {}'. Format (os .getpid ())) # vytváranie procesov p1 = multiprocesing.Process (target = worker1) p2 = multiprocessing.Process (target = worker2) # spustenie procesov p1.start () p2.start () # ID procesu print ('ID of process p1: {} '. format (p1.pid)) print (' ID of process p2: {} '. format (p2.pid)) # počkaj, kým sa procesy nedokončia p1.join () p2.join () # oba procesy dokončili tlač ('Oba procesy dokončili vykonávanie!') # skontrolovať, či sú procesy živé tlačiť ('Proces p1 je nažive: {}'. format (p1.is_alive ())) print ('Proces p2 je nažive: {} '.formát (p2.is_alive ()))

Výkon

ID hlavného procesu: 18938

ID spusteného procesu worker1: 18939

ID spusteného procesu worker2: 18940

ID procesu p1: 18939

ID procesu p2: 18940

Oba procesy skončili!

Proces p1 je nažive: Falošný

Proces p2 je nažive: Falošný

Vo vyššie uvedenom programe si všimnite, že proces p1 aj p2 bežia nezávisle od ich individuálnych pamätí. Hneď ako obidve skončia vykonávanie, program sa ukončí.

Týmto sa dostávame na koniec tohto článku o multiprocesingu v Pythone

Ak chcete získať podrobné informácie o Pythone a jeho rôznych aplikáciách, môžete pre živé online školenie s nepretržitou podporou a doživotným prístupom.

Máte na nás otázku? Uveďte ich v sekcii komentárov článku a my sa vám ozveme.