Qual é a maneira correta de comparar duas vezes no Python para acelerar o teste de uma seção do código? Eu tentei ler os documentos da API. Não sei se entendi a coisa do timedelta.
Até agora eu tenho este código:
from datetime import datetime
tstart = datetime.now()
print t1
# code to speed test
tend = datetime.now()
print t2
# what am I missing?
# I'd like to print the time diff here
python
datetime
time
time-measurement
BuddyJoe
fonte
fonte
Respostas:
datetime.timedelta
é apenas a diferença entre duas datas ... então é como um período de tempo, em dias / segundos / microssegundosEsteja ciente de que
c.microseconds
apenas retorna a parte de microssegundos da timedelta! Para fins de tempo, use semprec.total_seconds()
.Você pode fazer todo tipo de matemática com datetime.timedelta, por exemplo:
Pode ser mais útil observar o tempo da CPU em vez do tempo do relógio de parede ... embora isso seja dependente do sistema operacional ... em sistemas do tipo Unix, verifique o comando 'time'.
fonte
int(c.total_seconds() / 60)
neste casoDesde o Python 2.7, existe o método timedelta.total_seconds (). Portanto, para obter os milissegundos decorridos:
fonte
Você pode querer usar o módulo timeit .
fonte
Você também pode usar:
Ou você pode usar os criadores de perfil python .
fonte
start = time.clock()
lo, imprimeDeprecationWarning: time.clock has been deprecated in Python 3.3 and will be removed from Python 3.8: use time.perf_counter or time.process_time instead
.Eu sei que é tarde, mas eu realmente gosto de usar:
time.time()
dá-lhe segundos desde a época. Como esse é um tempo padronizado em segundos, você pode simplesmente subtrair o horário inicial do horário final para obter o tempo do processo (em segundos).time.clock()
é bom para o benchmarking, mas achei inútil se você quiser saber quanto tempo levou o processo. Por exemplo, é muito mais intuitivo dizer "meu processo leva 10 segundos" do que dizer "meu processo leva 10 unidades de clock do processador"No primeiro exemplo acima, é mostrado um tempo de 0,05 para time.clock () vs 0,06377 para time.time ()
No segundo exemplo, de alguma forma, o tempo do processador mostra "0", mesmo que o processo tenha dormido por um segundo.
time.time()
mostra corretamente um pouco mais de 1 segundo.fonte
import time
declaraçãoO código a seguir deve exibir o tempo detalhado ...
fonte
Você pode simplesmente imprimir a diferença:
fonte
Eu não sou um programador Python, mas sei como usar o Google e eis o que encontrei: você usa o operador "-". Para completar seu código:
Além disso, parece que você pode usar a função strftime () para formatar o cálculo do intervalo de tempo para renderizar o horário, no entanto, o deixa feliz.
fonte
time.time () / datetime é bom para uso rápido, mas nem sempre é 100% preciso. Por esse motivo, gosto de usar um dos criadores de perfil std lib (especialmente o hotshot) para descobrir o que é o quê.
fonte
Você pode querer examinar os módulos de perfil . Você obterá uma melhor leitura de onde estão suas lentidão e grande parte do seu trabalho será totalmente automatizada.
fonte
Aqui está uma função personalizada que imita as funções do Matlab / Octave
tic
toc
.Exemplo de uso:
Função:
fonte
Você pode usar timeit como este para testar um script chamado module.py
fonte
Arrow: Melhores datas e horários para Python
fonte