5

Ad esempio, corro 4 scritti sequenzialmente:ipython script parallele esecuzione e restituire le variabili locali

%run -i script1.py 
%run -i script2.py 
%run -i script3.py 
%run -i script4.py 

Il tempo di esecuzione di ogni piuttosto lungo. Esiste un modo nel notebook iPython per eseguire gli script in parallelo e restituire le variabili locali da tutti loro (2 o 3 variabili che sono importanti)? Nell'esecuzione sequenziale funziona bene ma a lungo. Grazie in anticipo.

Ho cercato di applicare il codice da questa topic ma bloccato sulla prima parte:

def my_func(my_file): 
     !python pgm.py my_file 

o nel mio caso:

def my_func(my_file): 
     %run -i $my_file 

posso vedere che l'esecuzione del codice è succede ma dopo questo non riesco a vedere le variabili locali da questi script.

risposta

1

Supponiamo che abbiate avviato 4 motori e invierete i vostri 4 script su ciascuno.

Dopo aver fatto

rc = parallel.Client() 
view = rc.load_balanced_view() 
r = view.map_async(my_func, ["script1.py", "script2.py", "script3.py", "script4.py"]) 

Una volta che è finito, è possibile accedere, diciamo variabile a e b con pull:

var = rc[:].pull(["a","b"]) 
var.result # or var.r or var.result_dict 
[[10, 12020.2], [11, 14], [1, 0], [1, 14425]] 

che corrispondono al valore del a e b dopo ogni corsa di ogni script.

Quindi in script1.py, alla fine, si dispone di a==10 e b==12020.2.

Spero che questo aiuti.


A proposito, ho modificato un po 'il link si fa riferimento a, c'era un piccolo errore:

def my_func(my_file): 
     !python pgm.py my_file 

dovrebbe essere:

def my_func(my_file): 
     !python pgm.py {my_file}