Profilo di como

Nome como
Indirizzo email n/a
Messaggi7
  • Re: chiarimenti sul modulo multiprocessing
    Forum >> Principianti
    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.
  • chiarimenti sul modulo multiprocessing
    Forum >> Principianti
    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



  • Re: Creare un numero di variabili in base alla lunghezza di una lista
    Forum >> Principianti
    sembra il comando che fa al caso mio!
    grazie
    ti lascio al tuo Bacco :)
  • Re: Creare un numero di variabili in base alla lunghezza di una lista
    Forum >> Principianti
    Grazie per la risposta, ma per il lavoro che sto facendo devo mantenere la lista 'specie_opt' scritta in quel modo.
    Probabilmente mi sono espresso male nel messaggio precedente, ma quello che mi serve è riuscire a creare variabili differenti in base al numero che viene inserito con input in 'n_species', perchè nel resto del programma inseriro dei valori diversi per ogni specie.

    ad esempio se:
    n_species = 3
    vorrei creare le variabili
    specie1
    specie2
    specie3
    che potrebbero anche avere come nome le stringhe inserite in 'specie_opt', ma questo non è obbligatorio.

    Spero in questo modo di aver spiegato meglio il mio problema

    (p.s. ho dei controlli nel resto del programma, ma li ho omessi per rendere piu leggibile il messaggio)
  • Creare un numero di variabili in base alla lunghezza di una lista
    Forum >> Principianti
    Ciao a tutti!
    Dovrei realizzare un programma in cui creo n variabili (mi servono delle liste), dove n è la lunghezza di un array inserito da tastiera.
    Mi spiego meglio:
    Questa è la parte di programma da cui parto:
    n_species = input('Number of additional species : ')
    species_opt = 0 * n_species
    for i in range(n_species) :
        species_opt = raw_input('specie {0} : '.format(i+1)) 
    (lo zero dopo 'species_opt = ' è incluso tra parentesi quadre... non so come mai sul forum viene visualizzato come un punto esclamativo)
    Adesso dovrei creare un numero 'n_species' di liste... è possibile farlo all interno del ciclo for? esiste un comando per farlo?

    Spero che qualcuno riesca darmi almeno un'idea su come partire.
    Grazie mille
  • Re: Estrarre dati da un file.txt non sotto forma di matrice
    Forum >> Programmazione Python >> Files e Directory
    Ho risolto in una maniera non molto ortodossa con questo codice (le variabili sono in ordine differente rispetto a quello che ho scritto nel messaggio precedente).
    Mi piacerebbe pero riuscire ad avere una scrittura piu compatta e comoda da leggere

    dati = open ('datiinput.txt','r')
    datinput = dati.readlines()
    lista=[]
    for x in datinput :
    b = [x.strip()]
    lista = lista + b
    dati.close()

    Pressure=[]
    for i in lista[2:] :
    if i == 'tValues' :
    index = len(Pressure)+2
    break
    else :
    b =
    Pressure = Pressure + b
    Pressure = Pressure[0:-2]
    for i in range(0,len(Pressure)):
    Pressure = float(Pressure)

    Temperature = []
    for i in lista[index+2:] :
    if i == 'equivValues' :
    index = index+2+len(Temperature)
    break
    else :
    b =
    Temperature = Temperature + b
    Temperature = Temperature[0:-2]
    for i in range(0,len(Temperature)):
    Temperature = float(Temperature)

    EquivalenceRatio = []
    for i in lista[index+2:] :
    if i == 'fuelSpecies' :
    index = index+2+len(EquivalenceRatio)
    break
    else :
    b =
    EquivalenceRatio = EquivalenceRatio + b
    EquivalenceRatio = EquivalenceRatio[0:-2]
    for i in range(0,len(EquivalenceRatio)):
    EquivalenceRatio = float(EquivalenceRatio)

    for i in lista[index+1:index+2] :
    fuel = i

  • Estrarre dati da un file.txt non sotto forma di matrice
    Forum >> Programmazione Python >> Files e Directory
    Ciao a tutti!
    E' la prima volta che scrivo in questo forum e spero di essere nella sezione giusta...
    Sto avendo difficoltà con un programma che devo realizzare:
    in sostanza da un file di input scritto in questo modo
    "
    O2Init = 0.2
    N2Init = 0.8
    fuelSpecies = "NC12H26"
    fuelMassFractions = 1
    tValues
    (
    600
    650
    700
    );
    pValues
    (
    30e5
    70e5
    110e5
    );
    "
    dovrei fare un programma in python in cui i dati siano inseriti nelle variabili corrette, per esempio tValues diventa un array di float ([600., 650., 700.,]), fuelSpecies contiene la stinga "NC12H26" e cosi via per tutte le variabili.
    Ho già provato con i comandi np.loadtxt e np.genfromtxt, ma mi sembra di capire che funzionino solo per flat files.

    Qualcuno saprebbe darmi una mano?
    Grazie mille!