Waarom time uitvoering van een "lus" in Python met ritssluiting is ongeveer hetzelfde in twee equivalente contextt

stemmen
0

Ik stel dezelfde lus in Python met dezelfde functie met voorwerpen van dezelfde grootte in twee verschillende maar equivalente context. Echter, de rekentijd van de twee lussen is niet hetzelfde. In één geval is het drie keer de rekentijd van het andere geval. Hier is de code:

result = multiproc_map(local_analysis, state_batches)
for ii, (ATii,muii) in zip(state_batches, result):
   AT[:,ii] = ATii 
   mu[ii]  = muii 

Hier zijn de uitvoering diiferent tijd (in sec.) Van het gedeelte van de code over in de twee gevallen:

ogenblik van de uitvoering van multiproc_map: 9.5367431640625e-07 4,069389343261719

ogenblik van de uitvoering van het lus: 13,779568910598755 ,0259706974029541

In beide gevallen is de vorm van de objecten local_analysis en state_batches zijn precies hetzelfde.

Alle hulp zou zeer gewaardeerd worden. Natuurlijk kan ik verdere uitleg en informatie te verstrekken indien nodig :)

De vraag is gesteld op 09/10/2019 om 13:00
bron van user
In andere talen...                            


1 antwoorden

stemmen
0

Ik heb eindelijk een oplossing gevonden, maar geen verklaring voor dit probleem. Terwijl ik gebruikte deze lus in twee verschillende gevallen kan I de oorsprong van de fout te traceren. Ik eindelijk gevonden dat er een verschil in time uitvoering van het "lus" als ik de positie van de parameters veranderen in de definitie van de functie en het gebruik sleutelwoorden argumenten. Hier is de oude definitie van de functie:

hybrid_dual_resolution(N,Nl,Nhs,Nls,alpha,betaH1,betaH2,betaH3,betaL1,betaL2,betaL3,
                       opt_file_hr,opt_file_lr,loc_radh,loc_radl,upd_a,
                       infl=1.0,rot=False,mp=False,taper='GC',**kwargs):

Hier is de nieuwe definitie van de functie waar ik geef de argumenten als zoekwoorden argumenten:

def hybrid_dual_resolution(opt_file_hr=None,opt_file_lr=None,upd_a='DEnKF',
                           N=3,Nhs=200,Nl=32,Nls=200,loc_radh=17.7,loc_radl=8.75,
                           alpha=0.04,
                           betaH1=1.,betaH2=0.,betaH3=0.,
                           betaL1=0.,betaL2=1.,betaL3=0.,
                           taper='GC',infl=1.0,
                           rot=False,mp=False,**kwargs):

En nu is het moment van uitvoering van de lus is hetzelfde in beide gevallen en dicht bij de minimale tijd dat ik in de vorige post vermeld.

Ik ben erg verrast door deze bug. Denkt u dat het passeren van de argumenten als zoekwoorden argumenten van de uitvoeringstijd van de "lus" kan veranderen?

antwoordde op 11/10/2019 om 14:12
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more