Domanda

Vedo time.clock () su 'inizia' di Windows un timer quando viene chiamato per la prima volta, e torna elasped volta dopo la prima chiamata per le chiamate dopo. Ho letto che l'unico modo per riavviare l'orologio è quello di avviare un nuovo processo.

sta iniziando e le discussioni uccidendo dovuto riavviare il time.clock () come bene? Non sembra funzionare in questo momento. In caso contrario, è l'unica soluzione per rilanciare l'intero eseguibile?

È stato utile?

Soluzione

Un filo non è un processo, così, no. (Come un piccolo punto, non si può uccidere un thread in Python, si può chiedere solo per uscire. Uccidere le discussioni con altri mezzi, dove anche esistono tali mezzi, è probabile che lasciare Python in cattivo stato.)

La domanda è: perché si desidera azzerare il timer, e anche per questo che si sta utilizzando time.clock(). Se avete a cuore il tempo trascorso tra due punti ad alta granularità tale che time.time() non è adatto, non vi resta che sottrarre il primo punto dal secondo punto. Nessun ripristino necessario. Suggerirei usando solo time.time() meno che non si interessa davvero che po 'di differenza di granularità, come time.time() funziona allo stesso modo su tutte le piattaforme, contrariamente a time.clock().

Altri suggerimenti

Lasciando le discussioni a parte, se si desidera un orologio è possibile ripristinare con la precisione di time.clock() che è higer rispetto a quella dei time.time() solo perché il flottante del secondo è più grande (differenza quasi impercettibile), per misurare il lasso di tempo passato durante l'esecuzione del codice si può provare questo:

t0 = time.clock()
... do something
print('Running time:', time.clock()-t0)

Yo può anche provare una decorazione della funzione di questo:

def duration(code):
    def f(*args):
        t0 = time.clock()
        bar = code(*args)
        print('Running time:', time.clock()-t0)
        return bar
    return f

Dopo questo si può definire la funzione con il decoratore:

@duration
def myFun(*args):
    ... do something

O semplicemente chiamare la funzione con il decoratore:

duration(myFun)(*args)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top