Jak nejlépe implementovat multiprocesing v Pythonu?



Tento článek vás seznámí s multiprocesem v Pythonu a nakonec vám také nabídne programovou ukázku.

Rok 2019 byl pro technologický rozvoj po celém světě velmi velkým rokem. Počínaje výrobcem počítačů, který přidává do svých procesorů a procesorů více jader a uvádí na trh chytřejší čipy v mobilních telefonech, multiprocesing již není snem. Dnes je jedním z nejvýznamnějších programovacích jazyků, který podporuje multiprocesing . Díky zavedení paralelního procesního výkonu ve svém vydání mohou programátoři po celém světě nyní bez problémů vytvářet kódy, které mají být prováděny současně, a tedy jejich doba běhu o značné množství.

V tomto článku se budeme zabývat následujícími ukazateli,





jak používat nahradit v java

Nech nás začít,

Multiprocesing v Pythonu

Co je to multiprocesing?

Multiprocesing lze jednoduše definovat jako schopnost systému podporovat více než jednu operaci v dané instanci. To znamená, že aplikace v systémech s více procesy jsou rozděleny na malé kousky a poté běží nezávisle na sobě, aby se zvýšila účinnost a snížila celková doba běhu. Procesor v systému přiděluje každému malému kousku samostatné samostatné vlákno, což mu umožňuje fungovat jako samostatná entita.



Potřeba multiprocesingu

Představte si počítačový systém, který má v procesoru pouze jedno jádro. Pokud je tomuto jednomu jádru přiřazeno více úkolů, pak každý úkol mezi nimi prolomí a poté přepne na další. Tím se nezvýší doba potřebná k dokončení každého úkolu, ale také se sníží celková účinnost systému.

Na druhé straně víceprocesorový počítač může mít jeden procesor, který má uvnitř několik funkčních jednotek, nazývaných jednotlivá jádra, která mají schopnost spouštět několik různých úkolů současně. To nejen zvyšuje efektivitu systému, ale také z dlouhodobého hlediska podstatně snižuje provozní dobu systému.



Systém s více procesy v Pythonu může být dvou typů.

Systém více procesorů

Tento systém má v podstatě pod kapotou několik procesorů, z nichž každý může provádět jeden úkol najednou a fungovat jako nezávislá součást.

Vícejádrový procesorový systém

Tento systém má více jader přítomných ve stejném procesoru, ve kterém jádro funguje jako samostatná jednotka a nezávisle provádí úkoly, které jsou mu přiřazeny.

Kód pro více procesů v Pythonu

Nyní, když jste zvyklí na základní koncept multiprocesingu, prozkoumejme, jak lze v Pythonu dosáhnout multiprocesingu.

V Pythonu obsahuje tlumočník velmi jednoduché a intuitivní API, které převezme jeden úkol, rozdělí ho na více komponent a nechá je samostatně zpracovat.

Podívejte se níže na programový modul, abyste lépe porozuměli tomuto konceptu Multiprocessing v pythonu.

Příklad 1

# import multiprocesního modulu import multiprocesního def print_cube (num): '' 'funkce pro tisk krychle daného num' '' print ('Cube: {}'. format (num * num * num)) def print_square (num): '' 'funkce pro tisk čtverce daného čísla' '' print ('Čtverec: {}'. format (num * num)) if __name__ == '__main__': # vytváření procesů p1 = multiprocesing.Process (target = print_square, args = (10,)) p2 = multiprocesing.Process (target = print_cube, args = (10,)) # spuštění procesu 1 p1.start () # spuštění procesu 2 p2.start () # počkejte, až bude proces 1 dokončen p1 .join () # počkat, až je proces 2 dokončen p2.join () # oba procesy dokončily tisk ('Hotovo!')

Výstup

Čtverec: 100

Krychle: 1000

Hotovo!

Nyní analyzujme tento program, abychom tomu lépe porozuměli.

  1. Prvním krokem je import víceprocesního modulu. Chcete-li to provést, použijte následující syntaxi: import více procesů.

  2. Nyní, když byl importován modul pro více procesů, pojďme dál a vytvořme proces. Abychom to mohli udělat, vytvoříme objekt třídy Process a přiřadíme mu následující argumenty. Cíl: funkce, kterou je třeba provést tímto procesem a args: argumenty, které je třeba předat cílové funkci.

Poznámka: Konstruktor procesu má schopnost převzít více cílů i argumentů, ale ve výše uvedeném příkladu jsme našemu procesu přiřadili pouze dva cíle a argumenty, jak je uvedeno níže.

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

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

  1. Nyní, když byl proces vytvořen, napíšeme syntaxi pro jeho spuštění.

    najít největší číslo v poli

p1.start ()

p2.start ()

Jakmile je proces spuštěn, aktuální program a již spuštěný program jsou spuštěny současně. Pokud v určité situaci potřebujete zastavit provádění aktuálního programu a zaměřit se pouze na provádění již existujícího, využijeme funkce join, jak je znázorněno níže.

p1.join ()

p2.join ()

Jakmile zadáte tuto syntaxi, tlumočník počká na dokončení programu p1 a poté přejde na program p2.

Abyste tomuto konceptu porozuměli dále, podívejte se níže na další příklad pro Multiprocessing In Python.

Příklad 2

# import multiprocesního modulu import multiprocesing import os def worker1 (): # tisk ID procesu print ('ID běžícího procesu worker1: {}'. format (os.getpid ())) def worker2 (): # print process id print ('ID procesu se systémem worker2: {}'. Format (os.getpid ())) if __name__ == '__main__': # tisk hlavního programu process id print ('ID hlavního procesu: {}'. Format (os .getpid ())) # vytváření procesů p1 = multiprocesing.Process (target = worker1) p2 = multiprocessing.Process (target = worker2) # spouštění procesů p1.start () p2.start () # ID procesu print ('ID of process p1: {} '. format (p1.pid)) print (' ID of process p2: {} '. format (p2.pid)) # počkat, až budou procesy dokončeny p1.join () p2.join () # oba procesy dokončily tisk ('Oba procesy dokončily spuštění!') # zkontrolujte, zda jsou procesy naživu tisk ('Proces p1 je naživu: {}'. format (p1.is_alive ())) print ('Proces p2 je naživu: {} '.format (p2.is_alive ()))

Výstup

ID hlavního procesu: 18938

ID spuštěného procesu worker1: 18939

ID běžícího procesu worker2: 18940

ID procesu p1: 18939

ID procesu p2: 18940

Oba procesy dokončily spuštění!

Proces p1 je naživu: False

Proces p2 je naživu: False

Ve výše uvedeném programu si všimněte, že proces p1 i p2 běží nezávisle na jejich individuálních pamětí. Jakmile jsou obě spuštěny, program je ukončen.

Tím se dostáváme na konec tohoto článku o multiprocesu v Pythonu

Chcete-li získat podrobné znalosti o Pythonu a jeho různých aplikacích, můžete pro živé online školení s 24/7 podporou a celoživotním přístupem.

Máte na nás dotaz? Uveďte je v sekci komentářů článku a my se vám ozveme.