Lavorare con i processi
Scorri per mostrare il menu
Il modulo multiprocessing di Python consente di ottenere una vera parallelizzazione avviando processi separati, ciascuno con il proprio interprete Python e spazio di memoria. A differenza dei thread, che condividono la memoria e vengono eseguiti nello stesso processo, i processi sono completamente isolati l'uno dall'altro. Questo isolamento evita la limitazione del Global Interpreter Lock (GIL), permettendo a più core della CPU di lavorare in parallelo su attività che richiedono molte risorse di calcolo. Dopo aver visto il video sopra, dovresti comprendere che la parallelizzazione basata sui processi è particolarmente utile quando è necessario eseguire calcoli intensivi o sfruttare più core per attività che altrimenti sarebbero rallentate dal GIL. Il modulo multiprocessing offre un'API familiare simile a quella del modulo threading, facilitando il passaggio tra threading e processing a seconda delle esigenze.
Utilizzo di queste classi e funzioni per costruire applicazioni parallele robuste, gestire la condivisione dei dati e coordinare l'esecuzione dei processi in Python.
123456789101112131415import multiprocessing import time def print_message(message, delay): time.sleep(delay) print(message) process1 = multiprocessing.Process(target=print_message, args=("Process 1 finished", 2)) process2 = multiprocessing.Process(target=print_message, args=("Process 2 finished", 1)) process1.start() process2.start() process1.join() process2.join()
Questo esempio di codice dimostra come utilizzare il modulo multiprocessing di Python per eseguire attività in parallelo creando processi separati. L'esempio utilizza semplici ritardi temporali e stampa messaggi per mostrare come i processi possano essere eseguiti in modo indipendente e simultaneo.
Concetti chiave illustrati
-
Creazione dei processi:
- Si creano nuovi processi utilizzando la classe
multiprocessing.Process; - A ciascun processo viene assegnata una funzione di destinazione (
print_message) e gli argomenti da passare a tale funzione.
- Si creano nuovi processi utilizzando la classe
-
Avvio dei processi:
- Il metodo
start()avvia ciascun processo, consentendo loro di essere eseguiti contemporaneamente; - Una volta avviato, ogni processo esegue la propria funzione di destinazione in modo indipendente dagli altri.
- Il metodo
-
Esecuzione parallela:
- Entrambi i processi attendono per durate diverse (
2e1secondi) utilizzandotime.sleep(); - Poiché vengono eseguiti in parallelo, il processo con il ritardo più breve termina per primo, anche se è stato avviato dopo l'altro.
- Entrambi i processi attendono per durate diverse (
-
Join dei processi:
- Il metodo
join()garantisce che il programma principale attenda la fine di entrambi i processi prima di proseguire; - Senza
join(), il programma principale potrebbe terminare prima che i processi abbiano completato l'esecuzione.
- Il metodo
Questo esempio mostra che con il multiprocessing, le attività possono essere eseguite contemporaneamente su più core della CPU, rendendolo ideale per operazioni CPU-bound che traggono vantaggio dall'esecuzione parallela.
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione