June 27
In informatica la terminologia della scienza, un processo è un'istanza in esecuzione di un programma nella memoria del computer. Questi processi in memoria possono anche generare altri processi. Il linguaggio di programmazione Python, tanto come altri linguaggi adatti per lo sviluppo di software per desktop, offre una libreria per facilitare la creazione e il mantenimento di processi in un sistema informatico.
Quando un utente inizia un'applicazione quale un browser Web, l'applicazione diventa un processo in esecuzione nel sistema operativo. Prima dell'esecuzione, un programma semplicemente risiede come i dati sul disco rigido. Quando viene eseguito, il sistema operativo carica il programma nella memoria principale o RAM. Tutte le applicazioni in esecuzione hanno spazio nella RAM dal sistema operativo mentre corrono. Durante l'esecuzione, il sistema operativo controlla i processi applicativi attraverso una tabella di processo che descrive lo stato del processo e dove risiede nella memoria.
I processi possono generare altri processi destinati a svolgere un lavoro simultaneo durante l'esecuzione del programma. Questa "multiprocessing" permette ai programmi di gestire molti compiti differenti allo stesso tempo. Un programma in Python, per esempio, può generare un processo separato utilizzando la libreria "multiprocessing" e il suo oggetto "Process", come il seguente esempio:
da multiprocessing processo di importazione
os importazione
def ciao ():
stampa ( 'Ciao')
p = processo (target = ciao)
p.start () // avvia processo figlio "p"
Un processo figlio, dato qualche compito, eseguirà questo compito, mentre il processo padre esegue il proprio compito. Nel seguente esempio, un programma Python genera un processo, e sia il processo padre e il processo figlio chiamare lo stesso metodo "os.getpid ()", che restituisce l'id numerico del processo in corso:
DEF PID ():
stampa ( 'Sono processo:', os.getpid ())
p = processo (target = PID)
p.start ()
stampa ( 'Sono processo:', os.getpid ())
p.join () // termina il processo di 'p'
L'output di questi due processi è la seguente. Si noti che il comando di genitore "stampa" con il "processo" minuscola in genere viene eseguito prima.
Sono processo: 57883
Sono processo: 57884
Due processi possono anche condividere dati tra di loro con un oggetto "tubo" che crea una connessione tra i due processi. L'utilizzo di questi oggetti di connessione, un processo figlio può inviare dati a un processo padre, che consente il processo padre di manipolare o stampare i dati salvati. L'esempio seguente mostra l'utilizzo dell'oggetto del tubo:
def inviare (bambino):
child.send ([1, 2, 3]) // il processo figlio invia i dati durante l'esecuzione
child.close ()
se il nome == 'main':
parent, child = Pipe()
p = processo (target = f, args = (bambino,))
p.start ()
parent.recv print () // processo padre riceve i dati da bambino
p.join