Hvorfor den tid utførelse av en "for loop" i Python med glidelås er ikke omtrent den samme i to tilsvarende contextt

stemmer
0

Jeg kjører den samme for loop i Python ved hjelp av den samme funksjon med objekter av samme størrelse i to forskjellige, men tilsvarende sammenheng. Men regnetid av de to sløyfer er ikke det samme. I ett tilfelle er det tre ganger beregningstidspunktet den andre saken. Her er koden:

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

Her er diiferent kjøretiden (i sek.) Av den delen av koden ovenfor i de to tilfeller:

tidspunktet for gjennomføring av multiproc_map: 9.5367431640625e-07 4,069389343261719

tidspunktet for utførelse av for loop: 13,779568910598755 ,0259706974029541

I begge tilfeller formen på objektene local_analysis og state_batches er nøyaktig det samme.

Eventuelle hjelpe ville være høyt verdsatt. Selvfølgelig kan jeg gi ytterligere forklaring og detaljer om nødvendig :)

Publisert på 09/10/2019 klokken 13:00
kilden bruker
På andre språk...                            


1 svar

stemmer
0

Jeg endelig funnet en løsning, men ikke en forklaring på dette problemet. Da jeg var med denne sløyfen i to forskjellige tilfeller, kunne jeg spore opprinnelsen til feilen. Til slutt fant at det var en forskjell i den tid utførelse av "for loop" hvis jeg endre posisjonen av parametrene i definisjonen av funksjon og bruk søkeord argumenter. Her er den gamle definisjonen av funksjonen:

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):

Her er den nye definisjonen av funksjonen hvor jeg gi argumentene som søkeord argumenter:

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):

Og nå er det tid for gjennomføring av loopen er den samme i begge tilfeller, og nær det minste tid jeg nevnte i forrige innlegg.

Jeg er ganske overrasket over denne feilen. Tror du at passerer argumentene som søkeord argumenter kan endre kjøretiden av "for loop"?

Svarte 11/10/2019 kl. 14:12
kilden bruker

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