Forum
  
    >> 
    
      Principianti
    
  
  >>
  
    chiarimenti sul modulo multiprocessing
  
  
  
  
  
  
  
   
  
    
    
    
      
      
  
Pagina: 1
  
Esegui il login per scrivere una risposta.
      
  
      
    Pagina: 1
| 
          
Scritto da como  | 
        
          
 2017-10-11 12:14:50 - chiarimenti sul modulo multiprocessing 
  
 | 
      
| 
          
          
             Buongiorno a tutti,
 
          
          
            
          
          
        sto lavorando con un programma piuttosto lungo (impiega qualche ora a terminare), quindi vorrei riuscire a farlo lavorare in parallelo sui 4 cores del mio pc, solo che dalle varie guide che ho letto mi sorgono alcuni domande: - la prima è sicuramente se qualcuno ha qualche consiglio su che oggetto usare: al momento sono indeciso tra Pool() e Process() credo che Pool sia piu' promettente, nonchè piu semplice da usare, ma qui vengo alla seconda domanda... - l'oggetto Pool lavora su cores diversi o sullo stesso core alternando i processi? Lo chiedo perchè ho provato a testarne il funzionamento con un semplice progamma: from multiprocessing import Pool
import time
work = (["A", 5], ["B", 2], ["C", 1], ["D", 3], ["E",4])
def work_log(work_data):
    print(" Process %s waiting %s seconds" % (work_data0, work_data1))
    time.sleep(int(work_data1))
    print(" Process %s Finished." % work_data0)
def pool_handler():
    p = Pool(2)
    p.map(work_log, work)
if __name__ == '__main__':
    pool_handler()e l'output che ottengo è il seguente:
Process A waiting 5 seconds Process B waiting 2 seconds Process B Finished. Process C waiting 1 seconds Process C Finished. Process D waiting 3 seconds Process A Finished. Process E waiting 4 seconds Process D Finished. Process E Finished. provando poi con Pool(5) anziché (2) l'output è di questo tipo: Process A waiting 5 seconds Process B waiting 2 seconds Process C waiting 1 seconds Process D waiting 3 seconds Process E waiting 4 seconds Process C Finished. Process B Finished. Process D Finished. Process E Finished. Process A Finished. che mi ha lasciato spiazzato perchè io ho solo 4 cores e quindi mi sarei immaginato di ottenere lo stesso output di Pool(4), ovvero: Process A waiting 5 seconds Process B waiting 2 seconds Process C waiting 1 seconds Process D waiting 3 seconds Process C Finished. Process E waiting 4 seconds Process B Finished. Process D Finished. Process A Finished. Process E Finished. Grazie e scusate per la lunghezza del messaggio  | 
      |
| 
          
Scritto da Daniele aka Palmux ![]()  | 
        
          
 2017-10-11 21:48:49 - Re: chiarimenti sul modulo multiprocessing 
  
 | 
      
          
          
            
 Ciao caro, qualche tempo fa avevo letto questo, dove vengono spiegati molto bene i concetti basilari dell'argomento.
 
          
          
            
          
          
        Cya  | 
      |
| 
          
Scritto da como  | 
        
          
 2017-10-12 15:29:32 - Re: chiarimenti sul modulo multiprocessing 
  
 | 
      
| 
          
          
             Grazie per la risposta, era una pagina che avevo già trovato, ma non le avevo prestato la debita attenzione, ora credo di aver capito qualcosa in piu: posso dare un numero qualsiasi di processi in pasto a Pool, ma le performance non migliorano una volta che il numero di  processi attivi occupa completamente i miei cores.
 
          
          
            
          
          
         | 
      
Pagina: 1
Esegui il login per scrivere una risposta.
  
