Type to search…

Multiprocessament

This page hasn't been translated yet — shown in its original language:Català

Programació en paral.lel

Un programa Python només utilitza 1 CPU del processador encara que el processador tingui vàries CPUs disponbibles.

Amb el mòdul multiprocessing podem executar una part del nostre programa en un nou procés que s’executarà en una altre CPU del processador.

Això es fa quan tens una funció computacionalment intensiva, que vol dir que ha de fer moltes coses i tarda molt en fer-les com es calcular el Factorial d’un número bastant gran.

A continuació tens una funció factorial:

python
def factorial(n):

    start_time = time.perf_counter()
    fact = 1
    for i in range(1, n + 1):
        fact = fact * i

    print(f"n = {n}: {time.perf_counter() - start_time : .4f} seconds")

Si executes dos cops la funció factorial() pots veure que el programa tarda més d’1 segon en executar-se perquè fins que no s’ha acabat d’executar la primera crida a la funció factorial()no és pot executar la segona crida a la funció factorial().

python
import time

def factorial(n):

    start_time = time.perf_counter()
    fact = 1
    for i in range(1, n + 1):
        fact = fact * i

    print(f"n = {n}: {time.perf_counter() - start_time : .4f} seconds")


if __name__ == "__main__":

    factorial(100000)
    factorial(90000)

    print("Program finished")

Si executes el programa pots veure que el progama tarda uns 5 segons en executar-se perquè només utiliza un procés i una CPU:

shell
$ time python3 multi.py 
n = 100000:  3.1057 seconds
n = 90000:  2.1048 seconds
Program finished

real    0m5,245s
user    0m4,799s
sys     0m0,446s

Amb la llibreria multiprocessing podem crear un procés per executar la tasca factorial.

python
...
import multiprocessing as mp

process = mp.Process(target=factorial, args= (100000,))

You're reading a preview.

Sign in to read the full article. Any account opens 4 free articles a month; students and teachers read their course pages without limit.

Sign in