24/02/2020, 17:02
(Questo messaggio è stato modificato l'ultima volta il: 26/02/2020, 11:48 da Robycop1.)
Quì di seguito il codice per effettuare due processi contemporaneamente. Non riuscendo a fare ciò di cui ho bisogno ho editato il seguente codice esemplificativo con la dimostrazione del risultato.
Verificando il risultato (Output) si può osservare che:
Output a video:
contatore 1 207
contatore 1 208
start func2
contatore 1 209
Contatore 2 = rocket(1) cont1(0)
Contatore 2 = rocket(2) cont1(0)
contatore 1 210
Contatore 2 = rocket(3) cont1(0)
Contatore 2 = rocket(4) cont1(0)
Contatore 2 = rocket(5) cont1(0)
contatore 1 211
Contatore 2 = rocket(6) cont1(0)
Contatore 2 = rocket(7) cont1(0)
Contatore 2 = rocket(8) cont1(0)
contatore 1 212
Contatore 2 = rocket(9) cont1(0)
Contatore 2 = rocket(10) cont1(0)
contatore 1 213
end func2
contatore 1 214
contatore 1 215
contatore 1 216
Verificando il risultato (Output) si può osservare che:
- i due processi sono eseguiti entrambi e contemporaneamente (anche se il secondo è partito dopo il primo)
- il contatore "cont1" si incrementa regolarmente nella funzione "func1"
- ma sopratutto che la variabile "cont1" non viene passata dalla funzione "func1" alla funzione "func2" (resta a 0)
Codice:
from multiprocessing import Process
import sys
rocket1=0
rocket2=0
cont1=0
def func1(cont1):
global rocket1
print ('start func1')
while rocket1 < 500:
rocket1 += 1
cont1=rocket1
print("contatore 1",cont1)
print ('end func1')
def func2(cont1):
global rocket2
print ('start func2')
while rocket2 < 10:
rocket2 += 1
print("Contatore 2 = rocket({}) cont1({})".format(rocket2,cont1))
print ('end func2')
if __name__=='__main__':
p1 = Process(target=func1, args=(cont1,))
p1.start()
p2 = Process(target=func2, args=(cont1,))
p2.start()
Output a video:
contatore 1 207
contatore 1 208
start func2
contatore 1 209
Contatore 2 = rocket(1) cont1(0)
Contatore 2 = rocket(2) cont1(0)
contatore 1 210
Contatore 2 = rocket(3) cont1(0)
Contatore 2 = rocket(4) cont1(0)
Contatore 2 = rocket(5) cont1(0)
contatore 1 211
Contatore 2 = rocket(6) cont1(0)
Contatore 2 = rocket(7) cont1(0)
Contatore 2 = rocket(8) cont1(0)
contatore 1 212
Contatore 2 = rocket(9) cont1(0)
Contatore 2 = rocket(10) cont1(0)
contatore 1 213
end func2
contatore 1 214
contatore 1 215
contatore 1 216